"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जावा में मेमेंटो डिज़ाइन पैटर्न को समझना

जावा में मेमेंटो डिज़ाइन पैटर्न को समझना

2024-08-07 को प्रकाशित
ब्राउज़ करें:889

Understanding the Memento Design Pattern in Java

संकट

मेमेंटो पैटर्न किसी ऑब्जेक्ट के इनकैप्सुलेशन का उल्लंघन किए बिना उसकी आंतरिक स्थिति को पकड़ने और पुनर्स्थापित करने की आवश्यकता को संबोधित करता है। यह उन परिदृश्यों में उपयोगी है जहां आप पूर्ववत/पुनः कार्यशीलता लागू करना चाहते हैं, जिससे किसी ऑब्जेक्ट को पिछली स्थिति में वापस लाया जा सके।

समाधान

मेमेंटो पैटर्न में तीन मुख्य घटक शामिल हैं:

  1. प्रवर्तक: वह वस्तु जिसकी आंतरिक स्थिति को सहेजने और पुनर्स्थापित करने की आवश्यकता है।
  2. स्मृति चिन्ह: एक वस्तु जो प्रवर्तक की आंतरिक स्थिति को संग्रहीत करती है। स्मृति चिन्ह अपरिवर्तनीय है।
  3. देखभालकर्ता: एक स्मृति चिन्ह से अपने राज्य को बचाने या पुनर्स्थापित करने के लिए प्रवर्तक से अनुरोध करने के लिए जिम्मेदार।

प्रवर्तक एक स्मृति चिन्ह बनाता है जिसमें इसकी वर्तमान स्थिति का एक स्नैपशॉट होता है। इस स्मृतिचिह्न को तब देखभालकर्ता द्वारा संग्रहीत किया जा सकता है और आवश्यकता पड़ने पर प्रवर्तक की स्थिति को बहाल करने के लिए उपयोग किया जा सकता है।

पक्ष - विपक्ष

पेशेवरों

  • एनकैप्सुलेशन को संरक्षित करता है: किसी ऑब्जेक्ट की आंतरिक स्थिति को उसके कार्यान्वयन विवरण को उजागर किए बिना सहेजने और पुनर्स्थापित करने की अनुमति देता है।
  • सरल पूर्ववत/पुनः करें: पूर्ववत/पुनः करें कार्यक्षमता के कार्यान्वयन को सुविधाजनक बनाता है, जिससे सिस्टम अधिक मजबूत और उपयोगकर्ता के अनुकूल हो जाता है।
  • राज्य का इतिहास: विभिन्न राज्यों के बीच नेविगेशन को सक्षम करते हुए, वस्तु की पिछली स्थितियों का इतिहास बनाए रखने की अनुमति देता है।

दोष

  • मेमोरी की खपत: कई स्मृतिचिह्नों को संग्रहीत करने से महत्वपूर्ण मेमोरी की खपत हो सकती है, खासकर यदि वस्तु की स्थिति बड़ी हो।
  • अतिरिक्त जटिलता: स्मृति चिह्नों के निर्माण और पुनर्स्थापन को प्रबंधित करने की आवश्यकता के साथ, कोड में अतिरिक्त जटिलता का परिचय देता है।
  • देखभालकर्ता की जिम्मेदारी: देखभालकर्ता को स्मृति चिन्हों को कुशलतापूर्वक प्रबंधित करने की आवश्यकता है, जो सिस्टम में जिम्मेदारी और जटिलता जोड़ सकता है।

वास्तविक-विश्व अनुप्रयोग का उदाहरण

मेमेंटो पैटर्न का एक व्यावहारिक उदाहरण टेक्स्ट संपादकों में है जो पूर्ववत/पुनः करने की कार्यक्षमता प्रदान करते हैं। दस्तावेज़ में प्रत्येक परिवर्तन को एक स्मृति चिन्ह के रूप में सहेजा जा सकता है, जिससे उपयोगकर्ता आवश्यकतानुसार दस्तावेज़ की पिछली स्थिति में वापस जा सकता है।

जावा में उदाहरण कोड

कोड में स्मृति चिन्ह पैटर्न:

// 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 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());
    }
}
विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/diegosilva13/understandard-the-memento-design-pattern-in-java-2c72?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3