Das Memento-Muster befasst sich mit der Notwendigkeit, den internen Zustand eines Objekts zu erfassen und wiederherzustellen, ohne seine Kapselung zu verletzen. Dies ist in Szenarien nützlich, in denen Sie die Funktion „Rückgängig/Wiederherstellen“ implementieren möchten, sodass ein Objekt in einen vorherigen Zustand zurückkehren kann.
Das Memento-Muster umfasst drei Hauptkomponenten:
Der Urheber erstellt ein Erinnerungsstück, das eine Momentaufnahme seines aktuellen Zustands enthält. Dieses Erinnerungsstück kann dann vom Hausmeister aufbewahrt und bei Bedarf zur Wiederherstellung des Zustands des Urhebers verwendet werden.
Ein praktisches Beispiel für das Memento-Muster sind Texteditoren, die die Funktion „Rückgängig/Wiederherstellen“ bieten. Jede Änderung am Dokument kann als Erinnerung gespeichert werden, sodass der Benutzer bei Bedarf zu früheren Zuständen des Dokuments zurückkehren kann.
Memento-Muster im Code:
// Originator public class Editor { private String content; public void setContent(String content) { this.content = content; } public String getContent() { return content; } public Memento save() { return new Memento(content); } public void restore(Memento memento) { content = memento.getContent(); } // Memento public static class Memento { private final String content; public Memento(String content) { this.content = content; } private String getContent() { return content; } } } // Caretaker public class History { private final Stack<Editor.Memento> history = new Stack<>(); public void save(Editor editor) { history.push(editor.save()); } public void undo(Editor editor) { if (!history.isEmpty()) { editor.restore(history.pop()); } } } // Client code public class Client { public static void main(String[] args) { Editor editor = new Editor(); History history = new History(); editor.setContent("Version 1"); history.save(editor); System.out.println(editor.getContent()); editor.setContent("Version 2"); history.save(editor); System.out.println(editor.getContent()); editor.setContent("Version 3"); System.out.println(editor.getContent()); history.undo(editor); System.out.println(editor.getContent()); history.undo(editor); System.out.println(editor.getContent()); } }
Das obige ist der detaillierte Inhalt vonDas Memento-Entwurfsmuster in Java verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!