1.意图

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

2.别名

Token

3.动机

为了允许用户取消不确定的操作或从错误中恢复过来,需要实现检查点和取消机制,而要实现这些机制,必须将状态信息保存在某处,这样才能将对象恢复到它们先前的状态。备忘录是一个对象,它存储另一个对象在某个瞬间的内部状态,而后者称备忘录的原发器。

4.适用性

  • 必须保存一个对象在某个时刻的状态,这样以后需要时它才能恢复到先前的状态。
  • 如果一个用接口来让其它对象直接得到这些状态,将会暴露对象的实现细节并破坏对象的封装性。

5.结构

6.效果

  • 保持边界封装 使用备忘可以避免暴露一些只应由原发器管理却又必须存储在原发器之外的信息。
  • 简化了原发器 在其它保持封装的性的设计中,Originator负责保持客户请求过的内部状态版本。
  • 使用备忘录可能代价很高 如果原发器在生成备忘录时必须拷贝并存储大量的信息,或者客户非常频繁地创建备忘录和恢复原发器状态,可能会导致非常大的开销。
  • 定义窄接口和宽接口。
  • 维护备忘录的潜在代价。

最新文章

  1. [转载]T-SQL(Oracle)语句查询执行顺序
  2. php中的可变函数和匿名函数
  3. hdu 5719(Arrange)(冷静分析)
  4. 【Bugly干货】关于 Android N 那些你不知道的事儿
  5. Log4j用法
  6. extjs中的下载并对文件重命名功能的实现
  7. 常规SQL注入脚本
  8. CodeBlocks ubuntu常见问题及小技巧
  9. OC - 6.block与protocol
  10. 转:MFC 的程序中GetAt()的理解
  11. zencart 自定义函数
  12. 1.Nginx服务应用
  13. A potentially dangerous Request.Form value was detected from the client问题处理
  14. 使用labelme制作自己的数据集
  15. AI之旅(1):出发前的热身运动
  16. MySQL常用函数介绍
  17. org.hibernate.InvalidMappingException: Could not parse mapping document from无法创建sessionFactory
  18. 火狐对SVG的兼容性
  19. ethereumjs/ethereumjs-wallet
  20. Jump Game leetcode java

热门文章

  1. Why is Visual Studio 2015 not able to find or open PDB files?
  2. oracle 执行 delete user$ 误删所有用户信息后的数据恢复流程
  3. JAVA 多线程和并发学习笔记(三)
  4. 学习总结——Selenium元素定位
  5. jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示
  6. eclipse内嵌jetty(run-jetty-run插件) 配置jndi数据源
  7. c# mybatis net +mysql
  8. maven项目管理构建
  9. EBS中配置OAF
  10. Objective - C - 添加类目 - NSDate