设计模式--备忘录(Memento)模式
生活随笔
收集整理的這篇文章主要介紹了
设计模式--备忘录(Memento)模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
模式定義
在不破壞封裝性的前提下,捕獲一個對象的內部狀態,并在該對象之外保存這個狀態,這樣以后就可以將該對象恢復到原先保存的狀態
類圖
要點總結
- 備忘錄(Memento)存儲原發器(Originator)對象的內部狀態,在需要時恢復原發器狀態
- Memento模式的核心是信息隱藏,即Originator需要向外界隱藏信息,保持其封裝性,但同時又需要將狀態保持到外界(Memento)
Go語言代碼實現
工程目錄
memento.go
package Mementotype Memento struct {state int }func NewMemento(value int) *Memento{return &Memento{value} }type Number struct {value int }func NewNumber (value int) *Number{return &Number{value: value} }func (n * Number) Double(){n.value = 2 * n.value }func (n *Number) Half () {n.value /= 2 }func (n *Number) Value() int {return n.value }func (n *Number) CreateMemento() *Memento{return NewMemento(n.value) }func (n *Number) SetMemento(memento *Memento){n.value = memento.state }memento_test.go
package Mementoimport ("fmt""testing" )func TestNumber_SetMemento(t *testing.T) {n := NewNumber(7)n.Double()n.Double()memento := n.CreateMemento() //記錄當前時刻的值n.Half()n.SetMemento(memento) //拿出當時記錄的值fmt.Println(n.value) }總結
以上是生活随笔為你收集整理的设计模式--备忘录(Memento)模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式--状态(State)模式
- 下一篇: 设计模式--组合(Component)模