zoukankan      html  css  js  c++  java
  • 备忘录模式

    1、定义:

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

    2、适用环境:

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

    3、缺点

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

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

      (1)发起人

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

      (2)备忘录

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

      (3)管理者

      • 主要是保存发起人在不同时刻创建的备忘状态
      • 在发起人需要恢复状态时,从管理者这里得到所需时刻的状态备忘录对象,然后使用该备忘录对象恢复到相应时刻的状态
  • 相关阅读:
    list, tuple, dict, set的用法总结
    函数的参数
    常用库函数
    Postman 常用测试结果验证的方法
    Loadrunner 使用代理录制脚本
    POSTMAN脚本录制
    Fiddler模拟post四种请求数据
    Python函数修饰符@的使用
    robot framework集成Jenkins环境
    python的位置参数、默认参数、关键字参数、可变参数区别
  • 原文地址:https://www.cnblogs.com/qingtian-jlj/p/5951064.html
Copyright © 2011-2022 走看看