1、备忘录模式(Memento Pattern)提供了一种弥补真实世界缺陷的方法,让“后悔药”在程序的世界中真实可行,其定义如下:Without voilating encapsulation, capture and externalize an object's internal state so that the object can be restored to this state lacter(在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可讲该对象恢复到原先保存的状态)
2、备忘录模式的角色
一、Originator-发起人角色
记录当前时刻的内部状态,负责定义那些属于备份范围的状态,负责创建和恢复备忘录数据。
二、Memento-备忘录角色
负责存储Originator发起人对象的内部状态,在需要的时候提供发起人需要的内部状态
三、Caretaker-备忘录管理员角色
对备忘录进行管理、保存和提供备忘录。
3、备忘录模式的注意事项
一、备忘录的生命周期
备忘录创建出来就要在“最近”的代码中使用,要主动管理他的生命周期,建立就要使用,不使用就要立即删除其引用,等待垃圾回收器对它的回收处理。
二、备忘录的性能
不要再频繁建立备份的场景中使用备忘录模式(比如一个for循环中),原因有二:一是控制不了备忘录建立的对象数量,二是大对象的建立是要耗费资源的,系统的性能需要考虑。
因此如果出现这样代码,设计师就应该好好想想怎么修改架构了。
4、最佳实践
备忘录模式是设计上的“月光宝盒”,可以让我们回到需要的年代;是程序数据的“后悔药”,吃了它就可以返回上一个状态,是设计人员的定心丸。确保即使在最坏的状态下也能最近的对象状态,如果大家看懂的话,请各位在设计的时候就不要使用数据库的临时表作为缓存备份数据了,虽然是一个简单的方法,但是它加大了数据库操作的频繁度,把压力下放到数据库了,最好的解决方法就是使用备忘录模式。
分享到:
相关推荐
在备忘录模式里,一个备忘录是一个对象,它存储另一个对象(备忘录的原发器)在某个瞬间的内部状态。备忘的目的就是为了以后在需要的时候,可以将原发器对象的状态恢复(undo/rollback)到备忘录所保存的状态。 备忘...
设计模式专题之(十九)备忘录模式--设计模式备忘录模式示例代码(python--c++)
java设计模式-备忘录模式源代码, 源码中为设计模式的工程源文件,已经测试过,没有问题。
设计模式-备忘录模式(讲解及其实现代码)
JAVA-设计模式-行为型模式-备忘录模式
备忘录模式C++实现,若理解有误,请留言指出。
备忘录模式.rar备忘录模式.rar备忘录模式.rar
备忘录模式的示例代码和文档,学习备忘录模式的参考资料。
java常用设计模式-备忘录模式
c++设计模式-行为型模式-备忘录模式;qt工程;c++简单源码;备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先...
ios平台下备忘录模式最初简代码讲解何为备忘录模式,相关博客http://blog.sina.com.cn/s/blog_161d504630102wxis.html
设计模式之备忘录模式 设计模式之备忘录模式 设计模式之备忘录模式 设计模式之备忘录模式 设计模式之备忘录模式
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...
Java设计模式,备忘录模式的Demo,具体的思想与实现有很多讲得很好的老师,我是看厉风行老师的视频学的,讲得不错,简单易懂
备忘录模式Demo
设计模式-备忘录模式
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 备忘录模式java demo
C#备忘录模式 代码例子 写的比较乱,呵呵
23个设计模式之一的备忘录模式-极客学院-java-课件代码,