备忘录模式Memento):

    在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象回复到原先保存的状态。

Originator发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并且使用备忘录恢复内部状态。Originator可根据需要决定Memento存储Originator的哪些内部状态。

Memento备忘录):负责存储Originator对象的内部状态,并可防止Originator以外的其他对象访问备忘Memento。备忘录有两个接口,Caretaker只能看到备忘录的窄接口,它只能讲备忘录传递给其他对象。Originator能够看到一个宽接口,允许它访问返回到先前状态所需要的所有数据。
Caretaker管理者):负责保存好备忘录Memento,不能对备忘录的内容进行操作或检查。
备忘录模式代码:

#pragma once
#include <string>
#include <iostream>
using namespace std;//备忘录(Memento)
class Cmemento
{
public:string m_strState;
public:Cmemento(string strState){m_strState = strState;}
};//发起人(Originator)类
class COriginator
{
public:string m_strState;
public:Cmemento * CreateMemento(){return new Cmemento(m_strState);}void SetMemento(Cmemento * pMemento){m_strState = pMemento->m_strState;}void Show(){cout<<"State="<<m_strState<<endl;}
};//管理者(Creataker)类
class CCaretaker
{
public:Cmemento *m_pMemento;
};

客户端使用代码:

#include "stdafx.h"
#include "MementoMode.h"
#include <windows.h>
using namespace std;int main()
{COriginator *pO = new  COriginator();pO->m_strState = "On";pO->Show();CCaretaker *pC = new CCaretaker();pC->m_pMemento = pO->CreateMemento();pO->m_strState = "Off";pO->Show();pO->SetMemento(pC->m_pMemento);pO->Show();delete pO;delete pC->m_pMemento;delete pC;return 0;
}

运行结果:

OK上面就是备忘录模式,其实可以想成是某个软件的临时快照等等,但是上面的很多地方用了public,本身应该考虑set,get的,为了方便就直接public了,但是应该要清楚这么写对封装一点没有好处,而且写的时候也会很难受。今天又太晚了,我就不改了就上面那样吧,大家理解备忘录模式的思想就好。

设计模式-备忘录模式相关推荐

  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. 前端笔试题面试题记录(上)
  2. ECSHOP删除云服务
  3. shell命令 vxworks5.5_vxWorks shell命令
  4. Docker创建虚机和swarm
  5. 使用XmlTextWriter生成XML文件的方法
  6. es6-super关键字
  7. C++冒泡排序(初级版)
  8. 构建工具 —— Groovy 与 Gradle
  9. Windows编程入门
  10. 瀑布流效果Demo总结(4)之基于jquery+masonry.js的实现
  11. detach()函数的用法
  12. ubuntu20.04下搜狗输入法不能输中文问题解决
  13. 使程序默认以管理员权限运行(包括注册表修改法)
  14. 计算机一个小键盘按不出来怎么办,我的电脑键盘上面1234按不出来怎么办
  15. Android 使用adb查看和修改电池信息
  16. 352记--扬哥本纪
  17. 快速学会如何在linux上用户环境变量和系统环境变量
  18. 手动清除网卡IP的Linux命令
  19. 荐书 | 8 本热门 AI 原版好书,趁假期充电!
  20. watchdog linux 进程,watchdog

热门文章

  1. ORACLE SEQUENCE 介绍
  2. 【职场攻略】是什么决定了我们的工资
  3. 查看Linux硬件信息命令的使用
  4. vs2008 试用版评估期结束的解决方法(2009-08-
  5. 四招避免SEO优化过度
  6. shell入门基础必备
  7. Python爬虫(二)_urllib2的使用
  8. 错误:不允许有匹配 [xX][mM][lL] 的处理指令目标。
  9. git基础: 《获取Git仓库》学习笔记
  10. 在线引入bootstrap包