备忘录模式

1、定义:

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态(以体现职责分离)。就可以在将来的某时刻将对象恢复到原先保存的状态。

2、适用环境:

  • 功能比较复杂,但是需要维护或记录属性历史的类
  • 需要保存的属性只是众多属性中的一部分时
  • 有时对象的一些属性必须保存在对象以外的类中,但又必须要由对象自己来读取。这时可以使用备忘录把复杂的对象内部信息对其他的对象屏蔽起来。
  • ※常用※当角色状态改变时有可能这个状态无效,此时可使用暂时存储起来的备忘录将状态复原

3、缺点

角色状态需要完整存储到备忘录中,但如果状态很多数据很大,那么备忘录对象将会非常消耗内存

4、理解分析(将对象拟人化的分为三类:发起人、备忘录、管理者)

  (1)发起人

    • 进行各种状态改变操作;
    • 创建某一个时刻的状态备忘录;备忘录对象只能在这里创建,因为备忘录对象是为了保存发起人的信息,所以他的构造参数依赖于发起人的内部成员,而这也就让其他外部的类无法操作备忘录对象。
    • 使用某个时刻的备忘恢复到以前的状态;访问某个时刻备忘录对象的内部成员,达到恢复自己状态的目的。

  (2)备忘录

    • 这个对象在外部不会使用,只会在‘发起人’对象内部进行建立和使用
    • 保存发起人的某时刻状态
    • 虽然是pulic的属性和构造函数,但是因为其他外部类无法实例化,所以也就只能由发起人在其内部对备忘录对象进行创建和访问

  (3)管理者

    • 主要是保存发起人在不同时刻创建的备忘状态
    • 在发起人需要恢复状态时,从管理者这里得到所需时刻的状态备忘录对象,然后使用该备忘录对象恢复到相应时刻的状态

 

posted @ 2016-10-13 20:08  花火灬流年  阅读(174)  评论(0编辑  收藏  举报