1.4 KiB
Memento Design Pattern — Java Example
Pattern: Behavioral → Memento Article: https://ankurm.com/memento-design-pattern-java/
What this example shows
A text editor with undo support that doesn't leak its internal state. EditorMemento is an immutable snapshot with package-private accessors — only Editor (in the same package) can read it back; everyone else can only call toString(). Editor is the originator: it packs its fields into a memento on save() and unpacks them on restore(). History is the caretaker: it pushes and pops mementos on a stack without ever inspecting their contents. Main types text, saves checkpoints after most edits (deliberately skipping one, to show it's lost on undo), then undoes twice.
How to run
javac memento/*.java -d out/memento
java -cp out/memento memento.Main
Requires Java 25.
Post Section ↔ File Mapping
| Post Section | File(s) |
|---|---|
| The Memento: Immutable and Opaque | EditorMemento.java |
| The Originator (Editor) | Editor.java |
| The Caretaker (History) | History.java |
| Wiring it together (Main demo) | Main.java |
Note: the "Serialization as Memento" snippet (ObjectOutputStream/ObjectInputStream example) is illustrative only — it is not part of this repository's runnable example.
Article: https://ankurm.com/memento-design-pattern-java/ All patterns: https://ankurm.com/design-patterns-java/