Rumah >Java >javaTutorial >Memahami Corak Reka Bentuk Memento di Jawa
Corak Memento menangani keperluan untuk menangkap dan memulihkan keadaan dalaman objek tanpa melanggar enkapsulasinya. Ini berguna dalam senario di mana anda ingin melaksanakan fungsi buat asal/buat semula, membenarkan objek untuk kembali kepada keadaan sebelumnya.
Corak Memento melibatkan tiga komponen utama:
Pencipta mencipta kenang-kenangan yang mengandungi petikan keadaan semasanya. Kenang-kenangan ini kemudiannya boleh disimpan oleh penjaga dan digunakan untuk memulihkan keadaan pemula apabila diperlukan.
Contoh praktikal corak Memento adalah dalam editor teks yang menawarkan fungsi buat asal/buat semula. Setiap perubahan pada dokumen boleh disimpan sebagai kenang-kenangan, membolehkan pengguna kembali ke keadaan dokumen sebelumnya seperti yang diperlukan.
Corak kenang-kenangan dalam kod:
// 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()); } }
Atas ialah kandungan terperinci Memahami Corak Reka Bentuk Memento di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!