备忘录模式
来源:互联网 发布:电子烟发热丝数据 编辑:程序博客网 时间:2024/05/16 02:35
#include <iostream>#include <string>#include <vector>using namespace std;class Memo{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;}
GOOD:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外 保存这个状态,这样就可以将以后的对象状态恢复到先前保存的状态。
适用于功能比较复杂的,但需要记录或维护属性历史的类;或者需要保存的属性只是众 多属性中的一小部分时 Originator 可以根据保存的 Memo 还原到前一状态。
0 0
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 2.29
- 5-8在MifareS50中,如果第2区的访问控制码为FF 08 70 69,则该区块1和块3的访问控制条件是什么?
- 长沙江河水利资源开发公司项目小记
- 习题2.29
- 字符串的简单加密与解密
- 备忘录模式
- 1.tcp/ip 协议分析-综述
- Swift中的get和set
- 习题2.30
- POJ3321 线段树,树状数组 建树经典题
- 【数据结构之二叉树】(二)B+树比B树更适合做文件索引的原因
- 黑马程序员_OC面向对象思想和类的创建
- 导数的定义
- mvc与三层结构终极区别