设计模式----Memento(备忘录)模式
GoF:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。
Memento模式是用一个Memento对象来存储另外一个对象的内部状态(前提条件是不破坏封装),将一个对象的状态捕捉住,并外部化存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代器模式一同使用。
在Memento模式中三个角色都很关键:
Memento(备忘录):备忘录存储原发器的内部状态。原发器根据需要决定备忘录存储原发器的哪些内部状态;防止 原发器以外的其他对象访问备忘录。
Originator(原发器):创建一个备忘录,用以记录当前时刻他的内部状态;使用备忘录恢复内部状态。
Caretaker(负责人):负责保存好备忘录。不能对备忘录的内容进行操作或检查。
下面给出一个事例代码(来自《Java与模式》):


































































































































给出Memento模式的UML图:
小结:
Memento模式还是比较好理解的,在GoF的《设计模式》和《Java与模式》中都讲了比较详细的内容。特别是在《Java与模式》中讲了Memento模式的变种,目前只是学习了解起概念和具体应用就可以了。深入的内容等碰到合适的场景在去理解和运用。
Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=1007600