मेमेंटो पैटर्न किसी ऑब्जेक्ट के इनकैप्सुलेशन का उल्लंघन किए बिना उसकी आंतरिक स्थिति को पकड़ने और पुनर्स्थापित करने की आवश्यकता को संबोधित करता है। यह उन परिदृश्यों में उपयोगी है जहां आप पूर्ववत/पुनः कार्यशीलता लागू करना चाहते हैं, जिससे किसी ऑब्जेक्ट को पिछली स्थिति में वापस लाया जा सके।
मेमेंटो पैटर्न में तीन मुख्य घटक शामिल हैं:
प्रवर्तक एक स्मृति चिन्ह बनाता है जिसमें इसकी वर्तमान स्थिति का एक स्नैपशॉट होता है। इस स्मृतिचिह्न को तब देखभालकर्ता द्वारा संग्रहीत किया जा सकता है और आवश्यकता पड़ने पर प्रवर्तक की स्थिति को बहाल करने के लिए उपयोग किया जा सकता है।
मेमेंटो पैटर्न का एक व्यावहारिक उदाहरण टेक्स्ट संपादकों में है जो पूर्ववत/पुनः करने की कार्यक्षमता प्रदान करते हैं। दस्तावेज़ में प्रत्येक परिवर्तन को एक स्मृति चिन्ह के रूप में सहेजा जा सकता है, जिससे उपयोगकर्ता आवश्यकतानुसार दस्तावेज़ की पिछली स्थिति में वापस जा सकता है।
कोड में स्मृति चिन्ह पैटर्न:
// 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 Stackhistory = 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()); } }
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3