// 定义:在不破坏封装性的前提下,不过一个对象的状态,并在对象
//     之外保存该状态
//
// 模式举例:打游戏由于某种原因存档,可随时回复
//
// 模式特点:
//
//#include<iostream>
#include<string>using namespace std;class Memento
{
public:Memento(string name, int age):m_name(name),m_age(age){}void setName(string name){m_name = name;}void setAge(int age){m_age = age;}string getName(){return m_name;}int getAge(){return m_age;}private:string m_name;int    m_age;
};class People
{
public:People(string name, int age):m_name(name),m_age(age){}void setName(string name){m_name = name;}void setAge(int age){m_age = age;}string getName(){return m_name;}int getAge(){return m_age;}Memento * createMemento(){return new Memento(m_name,m_age);}void setMemento(Memento * m){m_name = m->getName();m_age = m->getAge();}void showMe(){cout<<"name is : "<<m_name<<",age is "<<m_age<<endl;}private:string m_name;int    m_age;
};//这个类存在的意义?
//对备份进行管理,有可能存在多个备份
class Caretaker
{
public:Caretaker(Memento * m):m_memento(m){}void setMemento(Memento * m){m_memento = m;}Memento * getCaretaker(){return m_memento;}
private:Memento * m_memento;
};int main()
{People * pPeople = new People("xiaoming", 28);pPeople->showMe();Caretaker * pCaretaker = new Caretaker(pPeople->createMemento());pPeople->setAge(30);pPeople->showMe();pPeople->setMemento(pCaretaker->getCaretaker());pPeople->showMe();return 0;
}

3_7 MementoMode 备忘录模式相关推荐

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

    备忘录模式(Memento):     在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可以将该对象回复到原先保存的状态. Originator(发起人):负责创 ...

  2. 设计模式之备忘录模式(Memento)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  3. java备忘录模式应用场景_图解Java设计模式之备忘录模式

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

  4. 设计模式(行为型模式)——备忘录模式(Memento)

    2019独角兽企业重金招聘Python工程师标准>>> 本章讲讲第三类和第四类. 备忘录模式(Memento) 主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫 ...

  5. 《JAVA与模式》之备忘录模式

    备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式. 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象.备忘录模式的用意是在不破坏封装的条件下,将一 ...

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

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

  7. 【设计模式】备忘录模式

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

  8. 备忘录模式(Memento)的原版与简化版实现

    备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态. 适用场景: 1.保存一个对象在某一个时刻的(部分) ...

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

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

最新文章

  1. 大数据挖掘会让我们避免下一场瘟疫么?
  2. 【文章】论文写作知识积累
  3. malloc free
  4. c 引用mysql报错_安装TPCC-MySQL报错
  5. tensorflow 转张量类型为float_5个简单的步骤掌握Tensorflow的Tensor
  6. 取消centOS7虚拟机锁屏
  7. 【数据结构】线段树(interval tree)
  8. Android 使用URLConnection来post数据
  9. 2019华为杯研究生数学建模竞赛总结(E题 国一)
  10. 新唐MCU之UART软硬件调试过程记录及总结
  11. spring事务传播机制之《REQUIRED》
  12. 编程 100个训练题目
  13. 【毕业设计_课程设计】基于机器视觉的智能快递分拣系统
  14. 如何用好消息推送为app拉新、留存、促活
  15. Android开发三:数据库设计及应用(一)
  16. Java--->Ajax(上)
  17. Python下载文件的方式
  18. Matlab实现Lagrange插值多项式
  19. 蔚来汽车Java实习面经总结(来源:牛客与看准)
  20. 如何借助chatGPT帮你寻找最优惠的飞机票?

热门文章

  1. 基于注解的方式配置bean
  2. FastDFS的安装
  3. ReactJS入门之ReactJS简介
  4. python 绘制平滑曲线_用python绘制概率图形曲线
  5. 这10道Java面试题!大部分的人回答不出来
  6. 【Homework】说出 == 和 equals 的区别
  7. python 功能键ord_ord()函数以及Python中的示例
  8. Python MongoDB--PyMongo
  9. android -------- java虚拟机和Dalvik虚拟机
  10. 解决win10 .net framework 3.5安装失败0x800f081f