GOOD:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以将以后的对象状态恢复到先前保存的状态。
适用于功能比较复杂的,但需要记录或维护属性历史的类;或者需要保存的属性只是众多属性中的一小部分时Originator可以根据保存的Memo还原到前一状态。
#ifndef __MEMO_MODEL__ #define __MEMO_MODEL__#include <iostream> #include <string> using namespace std; /* GOOD:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以将以后的对象状态恢复到先前保存的状态。 适用于功能比较复杂的,但需要记录或维护属性历史的类;或者需要保存的属性只是众多属性中的一小部分时Originator可以根据保存的Memo还原到前一状态。 */ class Memo;//发起人类 class Originator { public:string state;Memo* createMemo();void setMemo(Memo* memo);void show(){ cout<<"状态:"<<endl; } };//备忘录类 class Memo { public:string state;Memo(string strState){ state = strState; } };Memo* Originator::createMemo() {return new Memo(state); }void Originator::setMemo(Memo* memo) {state = memo->state; }//管理者类 class Caretaker { public:Memo* memo; };#endif //__MEMO_MODEL__/* #include "MemoModel.h" int _tmain(int argc, _TCHAR* argv[]) { Originator* on = new Originator(); on->state = "on"; on->show();Caretaker* c = new Caretaker(); c->memo = on->createMemo();on->state = "off"; on->show();on->setMemo(c->memo); on->show();return 0; } */