设计模式之Memento
当需要恢复restore时,通常将Originator的状态备份到Memento中,从而不破坏封装。
Memento的维护控制靠的是Caretaker。
所以,Memento模式带有典型的MVC模式。
Caretaker是控制器,
Memento是模型,
Originator是视图。
故,Caretaker内部有Memento的引用,而Originator依赖于Memento。Caretaker负责保存Memento,Originator仅仅是使用Memento而已。这就是三者的简单关系。
Memento的典型运用有表单提交时,如果某个字段验证失败了,那么返回原来页面时,仍然能够保证原有的字段值的存在,无需我们自己重新填写。
Memento比较浪费内存,是Originator的内部状态的备份,这是其优点,当然有时候也是一种缺点。