///////////////////////////////////////////////////////////////////////////// // skeleton.cpp - demonstrate Memento pattern // // Jim Fawcett, CSE791 - Design Patterns, Summer 2000 // #include "skeleton.h" using namespace std; ///////////////////////////////////////////////////////////////////////////// // Originator's state class State { public: State() : _str("") { } State(const string &s) : _str(s) { } string str() { return _str; } private: std::string _str; }; ostream& operator<<(ostream &out, State s) { out << s.str(); return out; } // ///////////////////////////////////////////////////////////////////////////// // test stub void main() { cout << "\n Demonstrating Memento Skeleton Code " << "\n ====================================="; Originator orig(State("first state")); Caretaker ct(&orig); ct.acceptMemento(); orig.Operation("second state"); ct.acceptMemento(); orig.Operation("third state"); ct.acceptMemento(); ct.returnMemento(); ct.returnMemento(); ct.returnMemento(); cout << "\n\n"; }