Memento 패턴은 캡슐화를 위반하지 않고 객체의 내부 상태를 캡처하고 복원해야 하는 필요성을 해결합니다. 이는 실행 취소/다시 실행 기능을 구현하여 객체를 이전 상태로 되돌리려는 시나리오에서 유용합니다.
Memento 패턴에는 세 가지 주요 구성 요소가 포함됩니다.
발신자는 현재 상태의 스냅샷이 포함된 기념품을 만듭니다. 이 기념품은 관리자가 저장하고 필요할 때 작성자의 상태를 복원하는 데 사용할 수 있습니다.
Memento 패턴의 실제 예는 실행 취소/다시 실행 기능을 제공하는 텍스트 편집기에 있습니다. 문서의 각 변경 사항은 기념품으로 저장될 수 있으므로 사용자는 필요에 따라 문서의 이전 상태로 되돌릴 수 있습니다.
코드의 메모 패턴:
// 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()); } }
위 내용은 Java의 Memento 디자인 패턴 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!