Skip to content

Commit c45c279

Browse files
committed
fix Memento pattern
1 parent 99ff2de commit c45c279

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

memento/Memento.cpp

+7-4
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class Originator {
4747
public:
4848
// implemented only for printing purpose
4949
void setState(int s) {
50+
std::cout << "Set state to " << s << "." << std::endl;
5051
state = s;
5152
}
5253

@@ -85,11 +86,13 @@ class CareTaker {
8586
}
8687

8788
void save() {
89+
std::cout << "Save state." << std::endl;;
8890
history.push_back(originator->createMemento());
8991
}
9092

9193
void undo() {
92-
originator->setMemento(history.front());
94+
std::cout << "Undo state." << std::endl;;
95+
originator->setMemento(history.back());
9396
history.pop_back();
9497
}
9598
// ...
@@ -108,14 +111,14 @@ int main()
108111

109112
originator->setState(1);
110113
caretaker->save();
111-
std::cout << "Set state: " << originator->getState() << std::endl;
112114

113115
originator->setState(2);
114116
caretaker->save();
115-
std::cout << "Set state: " << originator->getState() << std::endl;
116117

118+
originator->setState(3);
117119
caretaker->undo();
118-
std::cout << "Undo state: " << originator->getState() << std::endl;
120+
121+
std::cout << "Actual state is " << originator->getState() << "." << std::endl;
119122

120123
delete originator;
121124
delete caretaker;

0 commit comments

Comments
 (0)