Memento Pattern Yuli Ge, Lukas Herrmann, Sheil Patel Team 19

Transcription

Memento Pattern Yuli Ge, Lukas Herrmann, Sheil Patel Team 19
Memento Pattern
Yuli Ge, Lukas Herrmann, Sheil Patel
Team 19
What is Memento?
●
●
provides the ability to restore an object to its previous state
○ for example, using an undo function via rollback or back stack
implemented with three objects:
○ memento
■ stores internal state of the originator object
■ state can include any number of state variables
○ originator
■ creates a memento object capturing the originators internal state
■ use the memento object to restore its previous state
○ caretaker
■ responsible for keeping the memento
Memento Pattern Model
Code Example - Originator/Memento
Code Example - Caretaker
Code Example - Memento Test
OUTPUT
Why is Memento Useful?
● Useful when you want to add an undo mechanism in
your application
○
Using CTRL-Z to undo typed text, for example
■ System can save states every so often using a Memento
■ CTRL-Z will revert back to previously saved Memento instances
● Using serialization along with this pattern, it's easy to
preserve the object state and bring it back later on
Downsides to Memento
● Saving or restoring of states can be a time consuming
process.
● If used incorrectly, it can expose the internal structure of
your object
○
Essentially allowing any other object to change the state of your
object.
Questions?