MEMENTO 메멘토 패턴

  • 객체 내부의 상태를 잡아내며, 저장 , 복구 시킨다.

#include <iostream>
using namespace std; #include <list> class Memento{ public: Memento(int _state) : state(_state) {} int getState() const { return state; } private: int state; }; class Originator{ public: void setState(int _state){ state = _state; cout<< "setState : " << state << endl; } void setMemento(Memento* _memento){ if(_memento){ state = _memento->getState(); delete _memento; cout << "setMemento : " << state << endl; } } Memento* createMemento(){ cout << "createMemento : " << state << endl; return new Memento(state); } private: int state; }; class Caretaker{ public: void pushMememto(Memento* _memento) { mlist.push_back(_memento); } Memento* popMemento() { Memento* _memento = mlist.back(); mlist.pop_back(); return _memento; } private: list<Memento*> mlist; }; int main(){ Caretaker caretaker; Originator *originator = new Originator(); originator->setState(1); caretaker.pushMememto(originator->createMemento()); originator->setState(3); caretaker.pushMememto(originator->createMemento()); originator->setState(5); caretaker.pushMememto(originator->createMemento()); originator->setMemento(caretaker.popMemento()); originator->setMemento(caretaker.popMemento()); originator->setMemento(caretaker.popMemento()); }



+ Recent posts