设计模式这样玩泰简单(Golang版)-备忘录模式
Posted hello_读书就是赚钱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式这样玩泰简单(Golang版)-备忘录模式相关的知识,希望对你有一定的参考价值。
场景
老板:对我们的现有记录做存档,后面可以恢复,设计一个代码的方案
你:好的,老板.那就是使用备忘录模式
方案
备忘录模式,指的是用一个备忘录对象来记录原始对象的内部状态信息.原始对象利用备忘录对象对自己的属性做一次存档,然后可以通过这个备忘录对象对自己的属性做回滚.备忘录对象没有任何的功能,只是充当一个数据记录的作用.当然有人会说我们也可以通过深拷贝一个原始对象来做存档,但这样的话可能会导致这个克隆对象被误用.把存档的功能单独抽离出来是最好的,我也可以在原始对象的内部维护这个备忘录对象,这样就不会暴露出去,还能做到随时回滚的效果.
实现
package main
import "fmt"
type Memento struct {
State int32
}
type Originator struct {
State int32
}
func (o *Originator) CreateMemento() *Memento {
fmt.Println("创建备忘录")
return &Memento{
State: o.State,
}
}
func (o *Originator) RestoreFromMemento(memento *Memento) {
fmt.Println("回滚")
o.State = memento.State
}
func main() {
fmt.Println("老板:对我们的现有记录做存档,后面可以恢复")
fmt.Println("你:好的老板")
o := &Originator{State: 100}
fmt.Printf("记录状态[%+v]\\n", o.State)
m := o.CreateMemento()
o.State -= 1
fmt.Printf("发生变动,记录状态[%+v]\\n", o.State)
o.RestoreFromMemento(m)
fmt.Printf("记录状态[%+v]\\n", o.State)
}
以上是关于设计模式这样玩泰简单(Golang版)-备忘录模式的主要内容,如果未能解决你的问题,请参考以下文章