1. मेमेन्टो पैटर्न क्या है
मेमेन्टो पैटर्न एक व्यावहारिक डिज़ाइन पैटर्न है जो किसी ऑब्जेक्ट की आंतरिक स्थिति को सहेजने और पुनर्स्थापित करने के लिए प्रयोग किया जाता है। यह ऑब्जेक्ट की स्थिति को एक मेमेन्टो ऑब्जेक्ट में सहेजता है, जो भविष्य में ऑब्जेक्ट को पिछली स्थिति में पुनर्स्थापित करने के लिए प्रयोग किया जा सकता है।
2. मेमेन्टो पैटर्न की चरित्रित और फायदे
मेमेन्टो पैटर्न की चरित्रित और फायदे निम्नलिखित हैं:
- यह ऑब्जेक्ट की आंकलन सिद्धांत का उल्लंघन किए बिना ऑब्जेक्ट की आंतरिक स्थिति को सहेजने और पुनर्स्थापित कर सकता है।
- यह ऑब्जेक्ट की ऐतिहासिक स्थितियों को लचीला रूप से प्रबंधित कर सकता है, जिससे पूर्वलिखित और पुनःलिखित क्रियाएँ करना सुविधाजनक हो जाता है।
- यह स्थिति को बाहरी रूप से सहेजने की अनुमति देता है, जिससे ऑब्जेक्ट की आंतरिक स्थिति का प्रकटन नहीं होता है।
3. मेमेन्टो पैटर्न के व्यावसायिक उपयोग के उदाहरण
मेमेन्टो पैटर्न का कई व्यावसायिक आवेदन संदर्भ होते हैं, जिनमें कुछ उदाहरण निम्नलिखित हैं:
- पाठ संपादकों में पूर्वलिखित और पुनःलिखित की क्षमता, जो प्रत्येक कार्य की स्थिति को सहेजने के लिए मेमेन्टो पैटर्न का उपयोग कर सकती है।
- गेमों में सहेजें और लोड की क्षमता, जो गेम प्रगति को सहेजने के लिए मेमेन्टो पैटर्न का उपयोग कर सकती है।
- ईमेल क्लाइंट्स में ड्राफ्ट स्टोरेज सुविधा, जो ड्राफ्ट ईमेल की स्थिति को सहेजने के लिए मेमेन्टो पैटर्न का उपयोग कर सकती है।
4. Golang में मेमेन्टो पैटर्न का कार्यान्वयन
4.1. UML कक्षा आरेख
4.2. उदाहरण परिचय
UML कक्षा आरेख के आधार पर विवरण
इस उदाहरण में, हमारे पास एक मूलग्रही वर्ग है जिसमें "स्थिति" नामक आंतरिक स्थिति है। मूलग्रही SetState विधि का उपयोग करके स्थिति को सेट करता है और CreateMemento विधि का उपयोग करके मेमेन्टो ऑब्जेक्ट बनाता है। मेमेन्टो ऑब्जेक्ट की आंतरिक स्थिति मूलग्रही की तरह है। Caretaker वर्ग मेमेन्टो ऑब्जेक्ट को संग्रहीत करने और AddMemento विधि का उपयोग करके मेमेन्टो जोड़ने के लिए जिम्मेदार है।
कार्यान्वयन चरण
- मेमेन्टो ऑब्जेक्ट बनाएं, जिसमें GetState विधि हो जो मूलग्रही की आंतरिक स्थिति को सहेजती है।
- मूलग्रही ऑब्जेक्ट बनाएं, जिसमें स्थिति सेट करने के और मेमेन्टो बनाने के विधि हो।
- Caretaker ऑब्जेक्ट बनाएं, जिसका कार्य मेमेन्टो ऑब्जेक्ट को सहेजना हो।
- मुद्रित करें कि मेमेन्टो बनाने और मूलग्रही में स्थिति को पुनर्स्थापित करने के विधियाँ:
- मेमेन्टो ऑब्जेक्ट बनाते समय, मूलग्रही की स्थिति को मेमेन्टो में सहेजें।
- स्थिति को पुनर्स्थापित करने पर, स्थिति को मेमेंटो से मूलग्रही में पुनर्स्थापित करें।
- Caretaker में मेमेन्टो जोड़ने और प्राप्त करने के विधियाँ कार्यान्वित करें:
- मेमेन्टो ऑब्जेक्ट को Caretaker में सहेजने के लिए एड मेमेंटो विधि का उपयोग करें।
- मेमेन्टो ऑब्जेक्ट को Caretaker से पुनर्प्राप्त करने के लिए गेट मेमेंटो विधि का उपयोग करें।
4.3.1. मेमेन्टो ऑब्जेक्ट बनाएं
type Memento struct {
state string
}
func (m *Memento) GetState() string {
return m.state
}
4.3.2. मेमेन्टो में स्थिति सहेजें
type Originator struct {
state string
}
func (o *Originator) SetState(state string) {
o.state = state
}
func (o *Originator) CreateMemento() *Memento {
return &Memento{state: o.state}
}
4.3.3. मेमेन्टो से स्थिति पुनर्स्थापित करें
func (o *Originator) SetMemento(memento *Memento) {
o.state = memento.GetState()
}
4.3.4. पुनःकरने के लिए मेमेन्टो पैटर्न का उपयोग करना
type Caretaker struct {
mementos []*Memento
}
func (c *Caretaker) AddMemento(m *Memento) {
c.mementos = append(c.mementos, m)
}
func (c *Caretaker) GetMemento(index int) *Memento {
return c.mementos[index]
}
4.3.5. पुनः कार्रवाई के लिए मेमेंटो पैटर्न का उपयोग करना
func main() {
originator := &Originator{}
caretaker := &Caretaker{}
originator.SetState("स्थिति 1")
caretaker.AddMemento(originator.CreateMemento())
originator.SetState("स्थिति 2")
caretaker.AddMemento(originator.CreateMemento())
originator.SetMemento(caretaker.GetMemento(0))
fmt.Println("स्थिति 1 पर पुनर्स्थापना करने के बाद मूलशीली की स्थिति:", originator.state)
originator.SetMemento(caretaker.GetMemento(1))
fmt.Println("स्थिति 2 पर पुनर्स्थापना करने के बाद मूलशीली की स्थिति:", originator.state)
}