1.备忘录模式

1备忘录模式的核心内容是:

A:包含一个存储记录的结构(C++中用类这种结构来存储)

B:包含产生记录的类。

C:使用一种数据结构来存储操作的记录。

2备忘录模式的作用是回放所做的操作

3备忘录模式具体描述

备忘录模式:备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。

备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捉住,

并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。

 

同时跟几个MM聊天时,一定要记清楚刚才跟MM说了些什么话

不然MM发现了会不高兴的哦,幸亏我有个备忘录,

刚才与哪个MM说了什么话我都拷贝一份放到备忘录里面保存,

这样可以随时察看以前的记录啦。

 

设计需要回放的软件,记录一下事物的状态。数据库备份,文档的编译,撤销,恢复

 

设计备忘录三大步骤

A设计记录的节点,存储记录,//记录鼠标,键盘的状态

B设计记录的存储,vector,list,map,set,链表,图,数组,树

C操作记录的类,记录节点状态,设置节点状态,显示状态,0.1秒记录一下

4.备忘录模式类图

5.代码:

#include
<iostream>

#include
<string>

#include
<vector>

using
namespace
std;

//备忘录模式:备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。

//备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捉住,

//并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。

 

//同时跟几个MM聊天时,一定要记清楚刚才跟MM说了些什么话

//,不然MM发现了会不高兴的哦,幸亏我有个备忘录,

//刚才与哪个MM说了什么话我都拷贝一份放到备忘录里面保存,

//这样可以随时察看以前的记录啦。

 

//设计需要回放的软件,记录一下事物的状态。数据库备份,文档的编译,撤销,恢复

 

//设计备忘录三大步骤

//1.设计记录的节点,存储记录,//记录鼠标,键盘的状态

//2.设计记录的存储,vector,list,map,set,链表,图,数组,树

//3.操作记录的类,记录节点状态,设置节点状态,显示状态,0.1秒记录一下

 

//备忘录的节点,下面是记录的节点,存储记录信息

//类作为存储结构

class
Memo

{

public:

   
string
state;

   
Memo(string
state)
//记录当前的状态

   
{

       
this->state
= state;

   
}

};

 

//类的包含备忘录的节点,Originator:表示的是发起人,起源,起因

//作为操作类

class
Originator

{

public:

   
string
state;

   
void
setMemo(Memo
*memo)

   
{

       
state =
memo->state;

   
}

   
Memo *createMemo()

   
{

       
return
new
Memo(state);

   
}

   
void
show()

   
{

       
cout <<
state <<
endl;

   
}

};

 

//备忘录的集合,作为存储结构

class
Caretaker

{

public:

   
vector<Memo
*> memo;

   
void
save(Memo
*memo)

   
{

       
(this->memo).push_back(memo);

   
}

   
Memo *getState(int
i)

   
{

       
return
memo[i];

   
}

};

 

int
main()

{

   
//操作类

   
Originator *og
= new
Originator();

   
//存储结构

   
Caretaker *ct
= new
Caretaker();

 

   
og->state
= "on";

   
og->show();

   
ct->save(og->createMemo());

 

   
og->state
= "off";

   
og->show();

   
ct->save(og->createMemo());

 

   
og->state
= "middle";

   
og->show();

   
ct->save(og->createMemo());

 

   
og->setMemo(ct->getState(1));

   
og->show();

 

   
og->setMemo(ct->getState(2));

   
og->show();

   
cin.get();

   
return 0;

}

运行结果:



时间: 2024-12-21 16:41:00

1.备忘录模式的相关文章

.net设计模式实例之备忘录模式(Memento Pattern)

一.备忘录模式简介(Brief Introduction) 备忘录模式(Memento Pattern),在不破坏封装的前提下,捕获一个对象的内部状态, 并在该对象之外保存这个状态.这样以后就可以就该对象恢复到原先保存的状态. 二.解决的问题(What To Solve) 当系统功能比较复杂,而且需要记录历史属性以便当需要时做恢复动作.Originator可以 根据保存的Memento信息还原到前一状态. 三.备忘录模式分析(Analysis)1.备忘录模式结构 Originator类:发起人.

详解备忘录模式及其在Java设计模式编程中的实现_java

1. 定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态. 2. 使用的原因想要恢复对象某时的原有状态. 3. 适用的情况举例有很多备忘录模式的应用,只是我们已经见过,却没细想这是备忘录模式的使用罢了,略略举几例: eg1. 备忘录在jsp+javabean的使用: 在一系统中新增帐户时,在表单中需要填写用户名.密码.联系电话.地址等信息,如果有些字段没有填写或填写错误,当用户点击"提交"按钮时,需要在新增页面上保存

Java设计模式(十九)----备忘录模式

备忘录模式 一. 概念 二. 结构 三. 分类 1."白箱"备忘录模式的实现 2."黑箱"备忘录模式的实现 3."多重"检查点 4."自述历史"模式 引子 我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状 态.比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来进行返 回.下象棋的时候,可以反悔.这时我们便可以使用备忘

设计模式:备忘录模式(Memento)

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将对象恢复到原先保存的状态. 备忘录模式的角色: 1. 原发器(Originator):负责创建一个备忘录,用以记录当前对象的内部状态,通过也可以使用它来利用备忘录回复内部状态.同时原发器还可以根据需要决定Memento存储Originator的那些内部状态. 2. 备忘录(Memento):用于存储Originator的内部状态,并且可以防止Originator以外的对象访问Memento.在备忘录Meme

第18章 备忘录模式(Memento Pattern)

原文  第18章 备忘录模式(Memento Pattern) 备忘录模式         概述: 备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern)或Token模式,是GoF的23种设计模式之一,属于行为模式. 定义(源于GoF<设计模式>):在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态.       结构图:        代码举例: 1 2 3 4 5 6 7 8 9 10

Java设计模式--备忘录模式

备忘录模式(别名:标记) 在不破坏封装性的前提下,捕捉一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态. Memento Pattern(Another Name: Token) Without violating encapsulation, capture and externalize an object original state so that the object can be restored to this state later. 类图

适配器模式之备忘录模式

设计模式目录 http://blog.csdn.net/fenglailea/article/details/52733435 风.fox 备忘录模式 Memento Pattern 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态 通用类图 组成 发起人角色 Originator 记录当前时刻的内部状态,负责定义那些属于备份范围的状态,负责创建和恢复备忘录数据 备忘录角色 Memento 负责存储Originator 发起人对

乐在其中设计模式(C#) - 备忘录模式(Memento Pattern)

原文:乐在其中设计模式(C#) - 备忘录模式(Memento Pattern)[索引页][源码下载] 乐在其中设计模式(C#) - 备忘录模式(Memento Pattern) 作者:webabcd 介绍 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到保存的状态. 示例 有一个Message实体类,某个对象对它的操作有Insert()方法,只有在插入时间符合要求的情况下才能插入成功,因此要求可以保存和恢复Message对象的状态,插入失败

设计模式之备忘录模式

        备忘录模式:                     在不破坏封装性的前提下,铺货一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态.          备忘录模式结构图:                                           Originator(原生者): 需要被保存状态以便恢复的那个对象.                 Memento(备忘录) : 该对象由Originator创建,主要用来保存Origi

备忘录模式之备份是一种态度

        有些事,错误了就是永远:有些人,一转身就是一辈子,不要轻易忽略任何爱,哪怕只是前天母亲节一通平凡的电话:时光走着她的路,路过青春的脚步,每个人或许都有遗憾的时候,总是要等到睡觉前,才知道功课只做了一点点 总是要等到考试后,才知道该念的书都没有念,为了让自己的人生少些许遗憾,需要我们做好时间管理,提前做好准备,认真思量之后再做打算.         但是在神奇的编程世界中,有一种魔法,可以让你避免很多遗憾,强大的word中具有"Ctrl+Z"的功能,PS等一些软件中,也具