mirror of
https://github.com/JakubVojvoda/design-patterns-cpp.git
synced 2025-12-17 04:44:36 +03:00
fix Memento pattern
This commit is contained in:
@@ -47,6 +47,7 @@ class Originator {
|
||||
public:
|
||||
// implemented only for printing purpose
|
||||
void setState(int s) {
|
||||
std::cout << "Set state to " << s << "." << std::endl;
|
||||
state = s;
|
||||
}
|
||||
|
||||
@@ -85,11 +86,13 @@ public:
|
||||
}
|
||||
|
||||
void save() {
|
||||
std::cout << "Save state." << std::endl;;
|
||||
history.push_back(originator->createMemento());
|
||||
}
|
||||
|
||||
void undo() {
|
||||
originator->setMemento(history.front());
|
||||
std::cout << "Undo state." << std::endl;;
|
||||
originator->setMemento(history.back());
|
||||
history.pop_back();
|
||||
}
|
||||
// ...
|
||||
@@ -108,14 +111,14 @@ int main()
|
||||
|
||||
originator->setState(1);
|
||||
caretaker->save();
|
||||
std::cout << "Set state: " << originator->getState() << std::endl;
|
||||
|
||||
originator->setState(2);
|
||||
caretaker->save();
|
||||
std::cout << "Set state: " << originator->getState() << std::endl;
|
||||
|
||||
originator->setState(3);
|
||||
caretaker->undo();
|
||||
std::cout << "Undo state: " << originator->getState() << std::endl;
|
||||
|
||||
std::cout << "Actual state is " << originator->getState() << "." << std::endl;
|
||||
|
||||
delete originator;
|
||||
delete caretaker;
|
||||
|
||||
Reference in New Issue
Block a user