设计模式--备忘录模式

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

备忘录模式比较适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时。

//定义一个发起人类

class Originator
{

//状态
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);
}

}

//备忘录类
class Memento
{
string state;
//构造方法,将相关数据导入。
public Memento(string state)
{
this.state = state;
}
//需要保持的数据属性,可以是多个
public string State
{
get { return state; }
}

}

//管理者类
class Caretaker
{
//备忘录
Memento memento;
//得到或设置备忘录
public Memento Memento
{
get { return memento; }
set { memento = value; }
}

}

调用:

//发起人 初始状态,状态属性为“on”。
Originator o = new Originator();
o.State = "On";
o.Show();
//管理者
Caretaker c = new Caretaker();
c.Memento = o.CreateMemento();//保存状态时,由于有了很好的封装,可以隐藏Originator的实现细节。

o.State = "off";
o.Show();

o.SetMemento(c.Memento);
o.Show();

原文地址:https://www.cnblogs.com/buzhidaojiaoshenme/p/6728462.html