备忘录模式

Posted zhengwei_cq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了备忘录模式相关的知识,希望对你有一定的参考价值。

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         }

 

  

以上是关于备忘录模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式备忘录模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

(十三)备忘录模式-代码实现

19-备忘录(Memento)模式Ruby实现

设计模式----备忘录模式

设计模式14:备忘录模式

设计模式之备忘录模式