阅读量:0
备忘录(Memento)设计模式是为了保存对象当前状态,并在需要的时候恢复到之前保存的状态。以下是一个简单的C#备忘录模式的实现:
// Originator 类,负责创建和恢复备忘录 class Originator { private string state; public string State { get { return state; } set { state = value; } } public Memento CreateMemento() { // 创建备忘录,保存状态 return (new Memento(state)); } public void SetMemento(Memento memento) { // 恢复状态 state = memento.State; } public void Show() { Console.WriteLine("State = " + state); } } // 备忘录 Memento 类,负责保存 Originator 状态 class Memento { private string state; public Memento(string state) { this.state = state; } public string State { get { return state; } } } // 管理者 Caretaker 类,负责保存备忘录,不应该对备忘录的内容进行操作和暴露 class Caretaker { private Memento memento; public Memento Memento { get { return memento; } set { memento = value; } } } // 客户端代码 class Program { static void Main(string[] args) { // 创建发起人对象 Originator originator = new Originator(); originator.State = "State #1"; originator.Show(); // 保存状态 Caretaker caretaker = new Caretaker(); caretaker.Memento = originator.CreateMemento(); // 改变 originator 状态 originator.State = "State #2"; originator.Show(); // 恢复状态 originator.SetMemento(caretaker.Memento); originator.Show(); Console.ReadKey(); } }
在这个例子中,Originator
类负责保存和恢复状态,Memento
类负责保存状态,而Caretaker
类负责保存Memento
对象,不应该对其进行操作。客户端代码演示了如何使用这些类来保存和恢复对象状态。