1. संयुक्त पैटर्न क्या है
संयुक्त पैटर्न एक सामान्यत: प्रयोग होने वाली वस्त्ररचना डिज़ाइन पैटर्न है। यह वस्त्रों को एक पेड़ संरचना में मिलाता है जो एक बारीकीवाला “भाग-समूह” संबंध को प्रस्तुत करता है, जो ग्राहकों को व्यक्तिगत वस्त्रों और वस्त्र संरचनाओं को संरचित तरीके से संभालने की अनुमति देता है।
2. संयुक्त पैटर्न की विशेषताएँ और फायदे
संयुक्त पैटर्न के मुख्य फायदे हैं:
- यह स्पष्ट रूप से उच्च संरचित वस्त्रों को परिभाषित कर सकता है, सभी या किसी भाग को प्रतिनिधित्व करता है, जिससे नए घटक जोड़ना सरल हो जाता है।
- यह एक संगठित अंतराफलक प्रदान करता है, जो संयुक्त भागों और व्यक्तिगत वस्तुओं की पहुंच को संगृहीत बनाता है, जिससे ग्राहकों को संयुक्त और व्यक्तिगत वस्तुओं का यूनिफ़ाइड रूप से उपयोग करने की सुविधा मिलती है।
3. संयुक्त पैटर्न के अनुप्रयोग के परिदृश्य
- जब आप वस्त्रों की भाग-पूर्ण वर्चस्वता को प्रस्तुत करना चाहते हैं।
- जब आप चाहते हैं कि ग्राहक संयुक्त वस्तुओं और व्यक्तिगत वस्तुओं के बीच अंतरों को नजरअंदाज करें, और संयुक्त संरचना में सभी वस्तुओं का एकसमान रूप से उपयोग करें।
4. संयुक्त पैटर्न का अनुप्रयोग जोलेंड में
मान लीजिए हम एक ई-वाणिज्यिक एप्लिकेशन डिज़ाइन कर रहे हैं, उत्पाद सूची संयुक्त पैटर्न का एक अच्छा उदाहरण है। एक श्रेणी अन्य श्रेणियों और उत्पादों को शामिल कर सकती है (जैसे इलेक्ट्रॉनिक्स श्रेणी मोबाइल फ़ोन, कंप्यूटर, और फोन्स में आईफोन, सैमसंग फ़ोन आदि)।
4.1 UML क्लास डायग्राम
4.2 उदाहरण परिचय
इस उदाहरण में, हमने Component
(स्पष्टरूप से ऑब्जेक्ट योजना की सुविधा का उपयोग कर रहे हैं) को अभ्यस्त मूल वर्ग के रूप में परिभाषित किया है, और Composite
और Leaf
ने दोनों इस इंटरफेस को कार्यान्वित किया है, जो संगठन ऑब्जेक्ट्स और मूल ऑब्जेक्ट्स को प्रतिनिधित्व करते हैं।
4.3 अमल कदम 1: स्पष्ट अमल क्डे़ से निर्धारित
इस विधि को सामान्यत: इंटरफेस कक्लास में परिभाषित किया जाता है और यह एक कुंजीय केंद्रीय कार्य है।
4.3.1 स्पष्ट अमल क्डे़ से निर्धारित इंटरफेस कडे़
//Component : मूल घटक इंटरफेस, समूहों और व्यक्तियों की सामान्यता का परिभाषित रूप, कम करता है
type Component interface {
Search(string)
}
4.3.2 स्पष्ट अमल कडे़ से निर्धारित बुनियादी वर्ग कडे़
इस कदम को विशेष रूप से संकेत संरूप में और पत्ता संपूर्ण रूप में संकेत किया गया है।
4.4 अमल कदम 2: स्पष्ट अमल कडे़ से निर्धारित पत्ता संरूप
यह ठोस कक्षामें नीचेरापी या ऑब्जेक्ट को प्रतिनिधित करता है, और इसमे अगले स्तर के ऑब्जेक्ट्स नहीं होते हैं।
4.4.1 स्पष्ट अमल कडे़ से निर्धारित इंहेरिट फ्ऱम द अब्स्ट्रैक्ट कम्पोनेंट क्लास
गोलैंग में, इंटरफेस इनहेरिटेंस को स्ट्रक्ट के माध्यम से अंजाम दिया जाता है।
4.4.2 स्पष्ट अमल कडे़ से निर्धारित पत्ता संरूप कडे़
//Product: Represents a leaf node, i.e., a product, and cannot have child nodes
type Product struct {
Name string
}
//Search: Search for products
func (p *Product) Search(keyword string) {
if strings.Contains(p.Name, keyword) {
fmt.Printf("Product: '%s' contains keyword: '%s'\n", p.Name, keyword)
}
}
4.5 अमल कदम 3: स्पष्ट अमल कडे़ से निर्धारित सं,यु,क्त संरूप
यह वर्ग बच्चों ऑब्जेक्ट्स को संग्रहण और प्रबंधित करने के लिए इस्तेमाल किया जाता है, समानत: कुछ बच्चों ऑब्जेक्ट्स को प्रबंधन और संगठन करने के लिए कुछ विधिया शामिल होते हैं, जैसे जोड़ें(कम्पोनेंट)
, हटाएँ(कम्पोनेंट)
, आदि।
4.5.1 स्पष्ट अमल कडे़ से निर्धारित इंहेरिट फ्ऱम द अब्स्ट्रैक्ट इंटरफेस क्लास
इसका इस्तेमाल स्ट्रक्ट का उपयोग करके इंटरफेस विधियों को वास्तव किया जाता है।
4.5.2 सं,धिनित मेथड्स, स्पष्ट अमल कडे़ से निर्धारित कंटेनर सं,वक््त क्लासमेरें
// Category: Represents a container node, i.e., product category, which can have child nodes
type Category struct {
Name string
Children []Component
}
// Add: Add a child node
func (c *Category) Add(child Component) {
c.Children = append(c.Children, child)
}
// Remove: Remove a child node
func (c *Category) Remove(child Component) {
// Specific implementation omitted
}
// Search: Search for products
func (c *Category) Search(keyword string) {
fmt.Printf("Category: %s\n", c.Name)
for _, composite := range c.Children {
composite.Search(keyword)
}
}
4.6 क्रियान्वयन चरण 4: ग्राहक कोड उदाहरण
एक संरचना को स्रोत संरचना में रूपांतरित करें, और फिर संरचना में पहुंचने की क्रिया को कॉल करें।
func main() {
root := &Category{Name: "रूट"}
electronics := &Category{Name: "इलेक्ट्रॉनिक्स"}
phone := &Product{Name: "फ़ोन"}
tv := &Product{Name: "टेलीविजन"}
root.Add(electronics)
electronics.Add(phone)
electronics.Add(tv)
root.Search("फ़ोन") // यह सभी बच्चों में खोजेगा
}