1、描述:
备忘录就好像一个记事本,记录一件事情的所有属性,比如,一个贩卖青菜的农民,进货以后,都要把原价记录在一个记事本上,等菜卖完了,再把记事本上价格和卖之后的价格进行比较,算出利润,但是今天说的备忘录模式,备忘录同样具有记事本的功能,不过,我们记录下来的信息,是为了下次需要的时候,把需要的属性和状态进行还原回来,我们在玩单机游戏,每一次的存档都是一个很好的备忘录模式。
2、定义:
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将对象恢复到原先保存的状态。
3、UML类图:

4、角色分析:
- 发起者:使用备忘录类,记录备忘录信息。
- 备忘录:记录某些信息的类。
- 管理者:存储备忘录信息的管理类。
5、例子:
发起者类:
Class Originator
{
private string state;
public string State
{
get{return state;}
set(state=value;}
}
public Memento CreateMemento()//创建备忘录
{
return new Memento(this.state);
}
public void SetMemento(Memento memento)
{
state =memento.state;//恢复备忘录
}
public void Show()
{
//显示状态
}
}
备忘录类:
Class Memento
{
public string State{get;set;}
public Memento(string state)
{
this.State=state;
}
}
管理者类:
class Caretaker
{
public Memento Memento{get;set;}//也可以是一个备忘录集合,用来存储多个备忘录
}
客户端:
Originator o =new Originator();
o.state="On";
o.show();
Caretaker c=new Caretaker();
c.Memento=o.CreateMemento();//保存状态
o.State="Off";
o.show();
o.SetMemento(c.Memento);//恢复初始状态
o.show();
浙公网安备 33010602011771号