`
bjsunrose
  • 浏览: 53825 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

23-18、备忘录模式

 
阅读更多
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、最佳实践
  备忘录模式是设计上的“月光宝盒”,可以让我们回到需要的年代;是程序数据的“后悔药”,吃了它就可以返回上一个状态,是设计人员的定心丸。确保即使在最坏的状态下也能最近的对象状态,如果大家看懂的话,请各位在设计的时候就不要使用数据库的临时表作为缓存备份数据了,虽然是一个简单的方法,但是它加大了数据库操作的频繁度,把压力下放到数据库了,最好的解决方法就是使用备忘录模式。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics