23种设计模式(十八)状态变化之备忘录
本系列所有文章来自李建忠老师的设计模式笔记,系列如下:
设计模式(一)面向对象设计原则
23种设计模式(二)组件协作之模板方法
23种设计模式(三)组件协作之策略模式
23种设计模式(四)组件协作之观察者模式
23种设计模式(五)单一职责之装饰模式
23种设计模式(六)单一职责之桥模式
23种设计模式(七)对象创建之工厂方法
23种设计模式(八)对象创建之抽象工厂
23种设计模式(九)对象创建之原型模式
23种设计模式(十)对象创建之构建器
23种设计模式(十一)对象性能之单件模式
23种设计模式(十二)对象性能之享元模式
23种设计模式(十三)接口隔离之门面模式
23种设计模式(十四)接口隔离之代理模式
23种设计模式(十五)接口隔离之适配器
23种设计模式(十六)接口隔离之中介者
23种设计模式(十七)状态变化之状态模式
23种设计模式(十八)状态变化之备忘录
23种设计模式(十九)数据结构之组合模式
23种设计模式(二十)数据结构之迭代器
23种设计模式(二十一)数据结构之职责链
23种设计模式(二十二)行为变化之命令模式
23种设计模式(二十三)行为变化之访问器
23种设计模式(二十四)领域规则之解析器
文章目录
- 动机
- 模式定义
- 要点总结
动机
在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些共有接口来让其他对象得到对象的状态,便会暴露对象的细节实现。
模式定义
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。
class Memento
{string state;//..
public:Memento(const string & s) : state(s) {}string getState() const { return state; }void setState(const string & s) { state = s; }
};class Originator
{string state;//....
public:Originator() {}Memento createMomento() {Memento m(state);return m;}void setMomento(const Memento & m) {state = m.getState();}
};int main()
{Originator orginator;//捕获对象状态,存储到备忘录Memento mem = orginator.createMomento();//... 改变orginator状态//从备忘录中恢复orginator.setMomento(memento);
}
要点总结
备忘录(Memento
)存储原发器(Originator
)对象的内部状态,在需要时恢复原发器状态。
Memento
模式的核心是信息隐藏,即Originator
需要向外接隐藏信息,保持其封装性。但同时又需要将状态保持到外界(Memento
)。
由于现代语言运行时(如C#、Java等)都具有相当的对象序列化支持,因此往往采用效率较高、又较容易正确实现的序列化方案来实现Mementor
模式。
23种设计模式(十八)状态变化之备忘录相关推荐
- 23种设计模式(15):备忘录模式
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样就可以将该对象恢复到原先保存的状态 类型:行为类 类图: 我们在编程的时候,经常需要保存对象的中间状态,当需要的时 ...
- 23种设计模式(十四)模板方法模式(阁瑞钛伦特软件-九耶实训)
常说的设计模式是23种设计模式,分为3大类: 创建型模式5种:工厂方法.抽象工厂.单例.建造者.原型 结构型模式7种:适配器.代理.桥接.装饰者.外观.享元.组合 行为型模式11种:模板方法.解释器. ...
- 23种设计模式(二十二)状态模式(阁瑞钛伦特软件-九耶实训)
常说的设计模式是23种设计模式,分为3大类: 创建型模式5种:工厂方法.抽象工厂.单例.建造者.原型 结构型模式7种:适配器.代理.桥接.装饰者.外观.享元.组合 行为型模式11种:模板方法.解释器. ...
- 110.【十万字带你深入学习23种设计模式】
Java 23种设计模式 (一).设计模式相关内容介绍 1.软件设计模式概述 (1).软件设计模式的产生背景 (2).软件设计模式的概念 (3).学习设计模式的重要性 (4).设计模式分类 2.UML ...
- 备战面试日记(3.3) - (设计模式.23种设计模式之结构型模式)
本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.9 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...
- JAVA设计模式总结之23种设计模式(重点!!!)
JAVA设计模式总结之23种设计模式: 一.什么是设计模式 设计模式遵循的原则有6个: 二.设计模式的三个分类 三.各分类中模式的关键点 四.概说23种设计模式 1.单例模式(Singleton) 2 ...
- (原创)23种设计模式一网打尽,看这篇就够了!
设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.建造者模式.单例模式.原型模式. 结构型模式,共七种:适配器模式.代理模式.装饰器模式.桥接模式.组合模式 ...
- Java进阶 23种设计模式 详解+应用+实例代码
文章目录 前言 设计模式六大原则 1.单一原则 (1) 概念 (2) 优点 2.开闭原则 (1) 概念 3.里氏替换原则 (1) 概念 4.依赖倒置原则 (1) 概念 (2) 作用 5.接口隔离原则 ...
- 23种设计模式【全】 包含:模式定义 使用场景 实现步骤 优缺点 模式区别 UML类图 示例代码 注意项等
23种设计模式(全) ***项目地址***:[GitHub](https://github.com/yjhroot/design-pattern) 声明 模式分类(3大类) 创建型模式(共5种) 结构 ...
- 从追MM谈23种设计模式
从追MM谈Java的23种设计模式 1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说&quo ...
最新文章
- PowerShell2.0之桌面计算机维护(九)磁盘管理
- 世卫组织总干事谭德塞:没有国家可以假装大流行已结束
- 物联网中的 ARM 漏洞利用
- hutool中的threadutil_Hutool - 好用的Java工具类库
- Java并发—锁的四种状态
- promise 中的异常捕获_promise 中的错误处理
- 【2018.06.21学习笔记】【linux高级知识 14.1-14.3】
- GPS时钟模块授时仪 与 同步时钟,1PPS
- mac下复制粘贴需要多次的问题
- 项目质量管理可能存在的问题及应对策略
- 企业网络安全建设必须要知道的终端产品
- 思科实验4.网络层:路由器IP地址配置
- 定制石墨烯水溶液-齐岳生物
- 人脸识别:Contrastive loss和梯度推到
- drawio界面自定义配置
- NHibernate in Action(第一章1.2)
- 以太坊私有链POA模式
- WinCC PRO V16项目下载的具体方法
- 摩托罗拉Edge Plus评论:被竞争对手掩盖的伟大手机
- 微信小程序自定义canvas手写签名组件