有事情记录到备份录内,后续可以调出备忘录处理
package main
import "log"
// Memento
// 有事情记录到备份录内
// 后续可以调出备忘录处理
// 有点儿中间临时变量的意思
type Memento struct {
state int
}
func NewMemento(value int) *Memento {
return &Memento{state: value}
}
func (m *Memento) Value() int {
return m.state
}
type Number struct {
value int
}
func NewNumber(value int) *Number {
return &Number{value: value}
}
func (n *Number) Double() {
n.value = n.value * 2
}
func (n *Number) Half() {
n.value = n.value / 2
}
func (n *Number) Value() int {
return n.value
}
// 创建值的备忘录
func (n *Number) CreateMemento() *Memento {
return NewMemento(n.value)
}
func (n *Number) ReinstanceMemento(memento *Memento) {
n.value = memento.Value()
}
func main() {
num := NewNumber(100)
log.Println("number init value = ", num.Value())
// 修改值前创建备忘录
mem := num.CreateMemento()
// 开始修改值
num.Double()
log.Println("number double value = ", num.Value())
// 还原值
num.ReinstanceMemento(mem)
log.Println("number original value = ", num.Value())
}
发表回复