设计模式——备忘录模式(Memento)
2008-09-20 15:28
549 查看
[align=center]设计模式(21):备忘录模式(Memento)[/align]
[align=center] [/align]
[align=center]备忘录模式(Memento)[/align]
[align=center] [/align]
定义
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
[align=center]备忘录模式(Memento)结构图[/align]
发起人(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)类
class Memento
{
private string state;
public Memento(string state)
{
this.state = state;
}
public string State
{
get { return state; }
}
}
管理者(Caretaker)类
class Caretaker
{
private Memento memento
{
get { return memento; }
set { memento = value; }
}
}
客户端程序
static void Main(string[] args)
{
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();
}
备忘录的好处:
把要保存的细节给封装在了Memento中,哪一天要改保存的细节也不用影响客户端了.
Mememto模式比较适用于功较复杂,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时,Originator可以根据保存的Memento信息还原到前一状态。
如果在某个系统中使用命令模式时,需要实现命令的撤销功能,那么命令模式可以使用备忘录模式来存储可撤销操作的状态。
当角色的状态改变时候,有可能这个状态无效,这时候就可以使用暂时存储器起来的备忘录将状态恢复。
[align=center] [/align]
[align=center]备忘录模式(Memento)[/align]
[align=center] [/align]
定义
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
[align=center]备忘录模式(Memento)结构图[/align]
发起人(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)类
class Memento
{
private string state;
public Memento(string state)
{
this.state = state;
}
public string State
{
get { return state; }
}
}
管理者(Caretaker)类
class Caretaker
{
private Memento memento
{
get { return memento; }
set { memento = value; }
}
}
客户端程序
static void Main(string[] args)
{
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();
}
备忘录的好处:
把要保存的细节给封装在了Memento中,哪一天要改保存的细节也不用影响客户端了.
Mememto模式比较适用于功较复杂,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时,Originator可以根据保存的Memento信息还原到前一状态。
如果在某个系统中使用命令模式时,需要实现命令的撤销功能,那么命令模式可以使用备忘录模式来存储可撤销操作的状态。
当角色的状态改变时候,有可能这个状态无效,这时候就可以使用暂时存储器起来的备忘录将状态恢复。
相关文章推荐
- 设计模式(4)-行为型-备忘录模式(Memento)
- [设计模式](十二):备忘录模式(Memento)|状态模式(State) - (两种类状态行为模式)
- Java设计模式之--备忘录模式(Memento)
- Java开发中的23种设计模式之十九:备忘录模式(Memento)
- 设计模式-备忘录模式(Memento)的详解
- java设计模式(十八)——备忘录模式(Memento)
- 【设计模式 - 18】之备忘录模式(Memento)
- [php]php设计模式 Memento (备忘录模式)
- JAVA设计模式(20):行为型-备忘录模式(Memento)
- 设计模式 - Memento 模式(备忘录模式)
- java设计模式19——备忘录模式(Memento)
- 设计模式--备忘录模式(Memento)
- 设计模式之备忘录模式(Memento)
- 备忘录模式设计模式入门Memento
- 设计模式--备忘录模式(Memento)
- 设计模式——备忘录模式(Memento)
- C++设计模式-Memento备忘录模式
- java设计模式十六--Memento(备忘录模式)
- 设计模式(4)-行为型-备忘录模式(Memento)
- 设计模式(15)-备忘录模式(Memento)