备忘模式(Memento)在不破坏封装性的前提下,捕捉一个对象的内部状态,并在对象之外保存这个状态,这样以后就可以将这个对方恢复到保存的状态.可以使用序列化将保存的状态类序列化为本地文件,这样可以持久化保存当前状态.如果用`一个接口来让其它对象直接得到这些状态,将会暴露对象的实现细节并破坏对象的封装性.
public class Target
{
public int Number;
public Memento Backup()
{
return new Memento(this);
}
public void Restore(Memento memo)
{
Number = memo.Number;
}
} // class Target
public class Memento
{
public int Number;
public Memento(Target target)
{
Number = target.Number;
}
} // class Memento