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

场景:此处以图形系统为例,圆为原发器,该系统对圆进行处理,并保存可恢复状态序列。


结构图

设计模式学习笔记二十——Memento模式


代码

设计模式学习笔记二十——Memento模式namespace DesignPattern.Memento
}

设计模式学习笔记二十——Memento模式namespace DesignPattern.Memento
}


要点
        1、备忘录(Memento)存储原发器(Originator)对象的内部状态,在需要时恢复原发器状态。本模式适用于“由原发器管理,却又必须存储在原发器之外的信息”。
        2、实现本模式时,要防止原发器以外的对象访问备忘录对象。备忘录对象有两个接口,一个为原发器使用的宽接口,一个为其他对象使用的窄接口。
        3、实现本模式时,要考虑拷贝对象状态的效率问题,如果对象开销比较大,可以采用某种增量式改变来改进本模式。

相关文章: