设计模式之备忘录模式
来源:互联网 发布:网络兼职业务员 编辑:程序博客网 时间:2024/05/21 18:36
备忘录模式
1. 备忘录模式:
备忘录:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
2. 备忘录模式解析:
适用场合?
比较适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时,Originator可以根据保存的Memo信息还原到前一状态。
缺点:
角色状态需要完整存储到备忘录对象中,如果状态数据很大很多,那么在资源消耗上,备忘录对象会非常耗内存。
3. 备忘录模式的例子:
#include <iostream>#include <string>#include <vector>using namespace std;class Memo//备忘录,负责存储Originator对象的内部状态{public:string state;Memo(string state){this->state=state;}};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(2) );og->show();return 0;}
阅读全文
0 0
- 设计模式之备忘录
- 设计模式之备忘录
- 设计模式之备忘录
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式 之 备忘录模式
- 设计模式之备忘录模式
- 应用可使用的最大内存
- linux mysql安装
- JavaScript之数据类型
- while循环写一万句我爱你
- 51nod 1305 Pairwise Sum and Divide 数学分析
- 设计模式之备忘录模式
- Visual Tracker Benchmark v1.0全过程配置方法,测试跟踪序列OTB50/OTB100
- 联想g400怎么进入BIOS设置|联想g400打开BIOS界面方法
- VS2015中MVC利用RDLC报表输出
- Red and Black【杭电1312】
- linux 安装dubbo+zookeeper
- nodejs下angularjs前后端upload , delete , get 图片的全流程实现
- tensorflow学习记录-flag设置
- 变量名的命名方法