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; } */