/**********************************************************
备忘录模式:
就是用一个类来保存一个类的中间状态;;;;;
如果想大规模的保存和管理状态那么就要是用一个管理类-------
-------就好比命令模式的时候,命令太多的话,我们在把他给管理起来------------
发起类中要有:设置状态的成员函数,创建包含当前状态信息的对象
通过管理类中的,发起类的指针传递,设置当前类中的状态。
*********************************************************/
#include <iostream>
#include <string>
using namespace std;
class Memo;
class Originator//初始状态类,我们想保存其中一个状态
{
public:
string state;
Memo* CreateMemo();
void SetMemo(Memo* memo);
void Show()
{ cout << "状态:" << state << endl;}
};
class Memo//备忘录类,保存状态所使用到的结构
{
public:
string state;
Memo(string strState)
{state = strState;}
};
Memo* Originator::CreateMemo(){
return new Memo(state);}//通过返回一个包含中间状态的对象
void Originator::SetMemo(Memo* memo){
state = memo->state;}
class Caretaker//管理者类
{
public:
Memo* memo;//管理者类中包含了,保存状态的结点对象的指针
}; //这样就可以通过这个指针,操作结点的状态
void main()
{
Originator* on = new Originator();
on->state = "on";
on->Show();
Caretaker* c = new Caretaker();//使用此指针指向这个,包含中间状态的对象
c->memo = on->CreateMemo();

on->state = "off";
on->Show();

on->SetMemo(c->memo);
on->Show();
system("pause");

}

参考:传智播客--尹成

设计模式---备忘录模式(C++实现)相关推荐

  1. Python设计模式-备忘录模式

    Python设计模式-备忘录模式 代码基于3.5.2,代码如下; #coding:utf-8 #备忘录模式 import randomclass gameCharacter():vitality = ...

  2. Java设计模式(备忘录模式-解释器模式-状态模式-策略模式-职责链模式)

    Java设计模式Ⅶ 1.备忘录模式 1.1 备忘录模式概述 1.2 代码理解 2.解释器模式 2.1 解释器模式概述 3.状态模式 3.1 状态模式概述 3.2 代码理解 4.策略模式 4.1 策略模 ...

  3. Java设计模式——备忘录模式

    Java设计模式--备忘录模式 需求 游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状 ...

  4. 设计模式-备忘录模式(Memento)-Java

    设计模式-备忘录模式(Memento)-Java 目录 文章目录 1.前言 2.示例案例-可悔棋的中国象棋 3.备忘录模式概述 3.1.备忘录模式定义 3.2.备忘录模式结构 3.3.备忘录模式结构图 ...

  5. C++设计模式——备忘录模式(memento pattern)

    博主看了许多文章和一些书,发现要么代码不全,要么对备忘录的理解有偏差,要么干脆根本就不是备忘录模式,经过博主查阅十余篇文章和详细研究书本备忘录模式,总结出这篇精华的c++备忘录模式文章,感兴趣的朋友可 ...

  6. java设计模式---备忘录模式

    一.引子 俗话说:世上难买后悔药.所以凡事讲究个"三思而后行",但总常见有人做"痛心疾首"状:当初我要是--.如果真的有<大话西游>中能时光倒流的& ...

  7. 大话设计模式—备忘录模式

    备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象.备忘录模式属于行为型模式.所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保 ...

  8. PHP设计模式——备忘录模式

    声明:本系列博客参考资料<大话设计模式>,作者程杰. 备忘录模式又叫做快照模式或Token模式,在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对 ...

  9. 一天一个设计模式---备忘录模式

    介绍:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可以将对象恢复到原先保存的状态. 场景:我们在平时玩单机游戏的时候,比如红白机的Pokemon–宠物小精灵, ...

  10. golang设计模式——备忘录模式

    备忘录模式 当初学备忘录模式的时候,特别开心.这不就是游戏里的备份嘛!游戏关闭之后,重新开启,从上次结束的位置继续开始.但终归没有进入游戏行业,也没有机会用过备忘录模式. 备忘录模式:在不破坏封装性的 ...

最新文章

  1. SQL取出每个产品的Top n 条记录
  2. Leetcode264. Ugly Number II丑数2
  3. 程序员修炼之路:你该知道的 7 个必经阶段
  4. 创建以mybatis为基础的web项目(2)mabitis中的一对一关系项目实战
  5. 表的插入、更新、删除、合并操作_7_通过视图插入
  6. Enterprise Library 5.0 开发向导- 简介(1)
  7. 【前端就业课 第一阶段】HTML5 零基础到实战(四)伪类与伪元素
  8. sql,dateadd,datediff
  9. 小数第n位java_蓝桥杯【历届试题 小数第n位】 java版 数论
  10. emoji表情mysql报错_让MySQL支持Emoji表情 mysql 5.6
  11. Maven项目出现web.xml is missing and 《failOnMissingWebXml》is set to true,已解决
  12. Ubuntu上,如何成功的安装pygrib
  13. String的replaceAll方法中的正则表达式用法
  14. 高频面试题:秒杀系统设计
  15. 爱莫科技入选英特尔“AI 百佳”,共同打造人工智能创新生态
  16. 基于vue3.0的遮罩
  17. AUTOCAD——命令重复、撤销与重做
  18. 一些文学常识。。。。。。
  19. ThinkPad L450加装固态硬盘教程
  20. 《鸟哥的Linux私房菜》精要 持续更新。。。

热门文章

  1. 1091 N-自守数 (15 分)—PAT (Basic Level) Practice (中文)
  2. rk3399_android7.1 USB Type-A的配置
  3. 软工大二下半年第十四周学习进度
  4. HPU--1392 分隔A+B
  5. JavaScript 错误 - Throw、Try 和 Catch
  6. Android Studio 设置/更改 SDK 路径
  7. 你真的会使用SQL Server的备份还原功能吗?之一:恢复模型
  8. ubuntu下安装php的curl扩展
  9. 对某目录下的文件按照日期进行排序
  10. 华为/华三IS-IS单区域配置