面向对象设计模式之备忘录模式
18、备忘录模式(Memento)
使用场景:
a) 需要保存/恢复数据相关状态场景。
b) 提供一个可回滚的操作
优点:
a) 给用户提供了一种可以恢复或回到特定历史状态的机制
b) 实现了信息的封装,使得用户不需要关心状态的保存细节
缺点:
资源消耗大。如果要保存的内部状态信息过多或者特别频繁,将会占用比较大的内存资源
模式结构:
a) 发起人角色(Originator):记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘录里的所有信息。
b) 备忘录角色(Memento):负责存储发起人的内部状态,在需要的时候提供这些内部状态给发起人。
c) 管理者角色(Caretaker):对备忘录进行管理,提供保存与获取备忘录的功能,但其不能对备忘录的内容进行访问与修改。
#include "stdafx.h"
#include <iostream>
#include <string>using namespace std;
//备忘录
class Memento {private:string state;
public:Memento(string state) {this->state = state;}void setState(string state) {this->state = state;}string getState() {return state;}
};
//发起人
class Originator {private:string state;
public:void setState(string state) {this->state = state;}string getState() {return state;}Memento* createMemento() {return new Memento(state);}void restoreMemento(Memento *m) {this->setState(m->getState());}
};
//管理者
class Caretaker {private:Memento *memento;
public:void setMemento(Memento *m) {memento = m;}Memento *getMemento() {return memento;}
};int main()
{Originator *or = new Originator();Caretaker *cr = new Caretaker();or->setState("S0");cout << "初始状态:" + or->getState() << endl;cr->setMemento(or->createMemento()); //保存状态or->setState("S1");cout << "新的状态:" + or->getState() << endl;or->restoreMemento(cr->getMemento()); //恢复状态cout << "恢复状态:" + or->getState() << endl;
}
运行结果:
面向对象设计模式之备忘录模式相关推荐
- java备忘录模式应用场景_图解Java设计模式之备忘录模式
图解Java设计模式之备忘录模式 游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态. ...
- 面向对象设计模式之策略模式
面向对象设计模式之策略模式 1.策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户 2.抽象鸭子类,鸭子飞行行为在此处类似于算法族 1 package ...
- java之备忘录模式,java设计模式之备忘录模式
java设计模式之备忘录模式 代码无错便是优? 简介: 在不破坏封装性的前提下 , 捕获一个对象的内部状态,并在该对象之外保存这个状态 , 这样以后就可以将该对象恢复到原先保存的状态 . 备忘录模式就 ...
- Alamps学习设计模式之备忘录模式(笑话:劫个色OR抢个鸡蛋版)
//设计模式之备忘录模式(月光宝盒版),只要喊菠萝菠萝蜜,就能返回事件的原点.//至尊宝//爱你一万年 class LoverWords {// 模拟Memento private Strin ...
- 设计模式之备忘录模式 转载
https://juejin.im/post/59c8eb6951882564c5164c5f 设计模式之备忘录模式 备忘录模式 介绍 是一种行为模式 用于保存对象当前状态,并在之后恢复到此状态(后悔 ...
- java备忘录模式 类图,Android编程设计模式之备忘录模式详解
本文实例讲述了Android编程设计模式之备忘录模式.分享给大家供大家参考,具体如下: 一.介绍 备忘录模式是一种行为模式,该模式用于保存对象当前状态,并且在之后可以再次恢复到此状态,这有点像我们平时 ...
- 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之备忘录模式
· 备忘录模式在王者荣耀中的应用 · 一.简述 在王者荣耀的游戏中,贤者的庇护这件装备设计的初衷是提高容错率,常常出现在游戏后期,玩家通过装备贤者的庇护在危急时刻可以实现复活效果,进而保命. 二.备忘 ...
- 设计模式之备忘录模式(Memento)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- 设计模式笔记--备忘录模式
常用设计模式有23中,分为: 创建型模式(主要用于创建对象) 1.单例模式 2.工厂方法模式 3.抽象工厂模式 4.建造者模式 5.原型模式 行为型模式 (主要用于描述对象 ...
最新文章
- 2022-2028年中国医养结合模式深度调研及投资前景预测报告
- 机器学习模型的超参数优化 | 原力计划
- OpenCASCADE绘制测试线束:数据交换命令之XDE 命令概览
- Java集合——HashMap、HashTable以及ConCurrentHashMap异同比较
- 向量的内积,与角的关系,向量与它本身点积_4
- mysql版本更新之后忘记登录密码_MySQL 密码遗忘和登陆报错问题
- 某大型银行深化系统之十八:性能设计之三
- 大数据常见的处理方法有哪些
- opencv摄像头常用操作
- kei4的安装教程(附下载地址)
- 如何防止三分钟热度?给自己的目标定个阶段性奖励吧
- VMware Workstation 与 Device/Credential Guard 不兼容.在禁用 Device/Credenti
- 小白必看!DIY装机,电脑显示器选购
- RocketMQ事务消息学习及刨坑过程
- ios设备如何安装chatgpt
- max导出fbx动画模型导入unity后播放会出现局部模型扭曲解决办法总结
- win10电脑禁用开机自启动软件
- kivy中on_press,on_release事件用代码设置函数的问题
- 弱监督学习框架 Detectron2/DRN-WSOD-pytorch 在服务器/windows上配置安装及使用
- CAD—dwg格式解析库:libdxfrw和libredwg