1、理解:备忘录模式就是在发起人内部有一个创建备忘录类的方法,这个备忘录类初始化时保存了发起人的状态,如果发起人要恢复状态就调用备忘录的状态属性,也可以通过一个管理者类来管理这个备忘录。
2、定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
3、代码:
1)发起人类
1 //发起人 2 class Originator 3 { 4 private string state; 5 public string State { get; set; } 6 //创建备忘录 7 public Memento CreateMemento() 8 { 9 return new Memento(state); 10 } 11 //恢复状态 12 public void SetMemento(Memento memento) 13 { 14 state = memento.State; 15 } 16 //显示状态 17 public void Show() 18 { 19 Console.WriteLine(state); 20 } 21 22 }
2)备忘录
1 //备忘录 2 class Memento 3 { 4 private string state; 5 public string State { get; } 6 public Memento(string state) 7 { 8 this.state = state; 9 } 10 11 }
3)管理者
1 //管理者类 2 class Caretaker 3 { 4 private Memento memento; 5 public Memento Memento { get; set; } 6 }
4)客户端
1 static void Main(string[] args) 2 { 3 Originator o = new Originator(); 4 o.State = "On"; 5 o.Show(); 6 7 Caretaker c = new Caretaker(); 8 c.Memento = o.CreateMemento(); 9 10 o.State = "Off"; 11 o.Show(); 12 o.SetMemento(c.Memento); 13 o.Show(); 14 Console.Read(); 15 }