设计模式观后(c++还原之二十一 备忘录模式)
2014-09-29 23:03
246 查看
//备忘录模式 //就是给发起人等给个备份,好恢复 前面的原型模式刚好可以用上(clone函数) //例子很简单会相对注释 //备忘录角色 class Originator; class Memento { private: string m_state; public: Memento(string _state) { m_state = _state; } string GetState() { return m_state; } void SetState(string _state) { m_state = _state; } }; //发起人角色 class Originator { private: string m_state; Originator* m_pOrigin; public: string GetState() { return m_state; } void SetState(string state) { m_state = state; } //创建备忘录 Memento* CreateMemento() { Memento* _p = new Memento(m_state); return _p; } //恢复备忘录 void RestoreMemento(Memento* p) { SetState(p->GetState()); } Originator* Clone() { //只有一个参数,我就不写赋值和复制函数了(可别忘了深拷贝哟) Originator* p = new Originator; p->SetState(m_state); return p; } }; //备忘录管理员角色 class Caretaker { private: vector<Memento*> m_vOrig; public: Memento* GetMemento() { return m_vOrig.back(); } void AddMemento(Memento* p) { m_vOrig.push_back(p); } }; class Client { public: static void main() { Originator* p_originator = new Originator; p_originator->SetState("www"); cout << p_originator->GetState() << endl; //创建备份管理员 Caretaker* p_caretaker = new Caretaker; p_caretaker->AddMemento(p_originator->CreateMemento()); p_originator->SetState("ddd"); cout << p_originator->GetState() << endl; p_originator->RestoreMemento(p_caretaker->GetMemento()); cout << p_originator->GetState() << endl; } }; //看完了模式,自己书写后,感觉有些遗憾 //首先,clone函数没有使用,Memento的保存我认为还是用clone函数保存为好(这样不用重新构造数据)。 //第二,Memento函数最好用模板编程来书写,可惜我的模板指针封装坏了,就没写。多看下泛型编程了 int _tmain(int argc, _TCHAR* argv[]) { locale::global(locale("")); Client::main(); system("pause"); return 0; }
相关文章推荐
- 设计模式观后(c++还原之十四 修饰模式)
- 设计模式观后(c++还原之十一 中介者模式)
- 设计模式观后(c++还原之二十二 访问者模式)
- 设计模式观后(c++还原之三 接口隔离)
- 设计模式观后(c++还原之十二 命令模式)
- 设计模式观后(c++还原之二十五 享元模式)
- 设计模式观后(c++还原之二 依赖的信用)
- 设计模式观后(c++还原之十六 适配器模式)
- 设计模式观后(c++还原之九 代理模式)
- 设计模式观后(c++还原之六 工厂模式)
- C++设计模式之二十一--Mediator中介者模式、Interpreter解释器模式、Flyweight享元模式、Memento备忘录模式
- 设计模式观后(c++还原之十 代理模式)
- 设计模式观后(c++还原之二十三 状态模式)
- 设计模式观后(c++还原之二十 门面模式)
- 设计模式观后(c++还原之二十六 桥梁模式)
- 设计模式观后(c++还原之四 开闭原则 )
- 设计模式观后(c++还原之八 建造者模式)
- 设计模式观后(c++还原之十七 迭代器模式)
- 设计模式C++描述----17.备忘录(Memento)模式
- 设计模式C++实现(12)——备忘录模式