大话设计模式读书笔记14----备忘录(Memento)
2010-04-29 20:08
387 查看
备忘录(Memento):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象外保存这个状态。这样就可将该对象恢复到原先保存的状态。
1、Originator(发起人):负责创建一个Memento备忘录,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Originator可根据需要决定Memento存储 Originator的哪些内部状态。
2、 Memento(备忘录):负责存储Originator内部状态,并可防止Originator以外的对象访问备忘录Memento。备忘录有两个接口,Caretaker只能看到备忘录的窄接口,它只能将备忘录传递给其他对象。Originator能看到一个粗接口,允许它访问返回到先前状态的所有数据。
备忘录模式代码using System;
using System.Collections.Generic;
using System.Text;
namespace Memento
{
class Program
{
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();
Console.ReadLine();
}
}
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);
}
}
class Memento
{
private string _state;
public string State
{
get { return _state; }
set { _state = value; }
}
public Memento(string state)
{
this._state = state;
}
}
class Caretaker
{
private Memento memento;
internal Memento Memento
{
get { return memento; }
set { memento = value; }
}
}
}
1、Originator(发起人):负责创建一个Memento备忘录,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Originator可根据需要决定Memento存储 Originator的哪些内部状态。
2、 Memento(备忘录):负责存储Originator内部状态,并可防止Originator以外的对象访问备忘录Memento。备忘录有两个接口,Caretaker只能看到备忘录的窄接口,它只能将备忘录传递给其他对象。Originator能看到一个粗接口,允许它访问返回到先前状态的所有数据。
备忘录模式代码using System;
using System.Collections.Generic;
using System.Text;
namespace Memento
{
class Program
{
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();
Console.ReadLine();
}
}
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);
}
}
class Memento
{
private string _state;
public string State
{
get { return _state; }
set { _state = value; }
}
public Memento(string state)
{
this._state = state;
}
}
class Caretaker
{
private Memento memento;
internal Memento Memento
{
get { return memento; }
set { memento = value; }
}
}
}
相关文章推荐
- 十八、备忘录模式Memento(行为型)
- 设计模式之十七------Memento(备忘录)
- 【HeadFirst 设计模式学习笔记】21 备忘录(Memento)模式拾零
- java 设计模式 学习笔记 (14) 备忘录模式
- 设计模式之备忘录模式Memento
- GOF 23 设计模式之 备忘录模式(Memento)
- Memento(备忘录)设计模式
- Memento(备忘录)
- [工作中的设计模式]备忘录模式memento
- Memento(备忘录)——对象行为模式
- B9:备忘录模式 Memento
- 14、备忘录模式—月光宝盒,人生不复返珍惜眼前人
- 第21讲:Memento 备忘录模式
- C++设计模式-Memento备忘录模式
- 设计模式学习笔记——备忘录(Memento)模式
- Irrlicht学习备忘录——14 Win32Window
- 设计模式的征途—20.备忘录(Memento)模式
- 19.备忘录模式--Memento
- Gof设计模式之备忘录模式 (Memento)
- Memento备忘录模式