备忘录模式:
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以备对象什么时候需要恢复到这个状态。
using System;
using System.Collections.Generic;
using System.Text;
namespace 设计模式
{
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)
{
this.state = memento.State;
}
public void Display()
{
Console.WriteLine("state=" + state);
}
}
class Memento
{
//备忘录的state字段显然应设置为只读状态
private readonly string state;
public Memento(string state)
{
this.state = state;
}
public string State
{
get { return state; }
}
}
class Costume
{
//客户端程序
static void Main(string[] args)
{
Originator originator1 = new Originator();
originator1.State = "原来的值,并进行备份";
originator1.Display();
Memento memento1 = originator1.CreateMemento();
//模拟数据损坏
originator1.State = "数据搞坏了,请调用备份";
originator1.Display();
originator1.SetMemento(memento1);
originator1.Display();
}
}
}