एब्स्ट्रैक्ट फ़ैक्टरी एक रचनात्मक डिज़ाइन पैटर्न है जो आपको उनके ठोस वर्गों को निर्दिष्ट किए बिना संबंधित ऑब्जेक्ट बनाने की सुविधा देता है।
कल्पना करें कि आप एक जीयूआई टूलकिट विकसित कर रहे हैं जो कई लुक-एंड-फील मानकों (जैसे, विंडोज, मैकओएस, लिनक्स) का समर्थन करता है। प्रत्येक लुक-एंड-फील मानक के लिए बटन, चेकबॉक्स और स्क्रॉलबार जैसे यूआई घटकों के एक अलग सेट की आवश्यकता होती है।
सार फ़ैक्टरी पैटर्न के बिना, आपको वर्तमान लुक-एंड-फील मानक के आधार पर इन घटकों के निर्माण को संभालने के लिए बहुत सारे सशर्त कोड लिखने होंगे। यह दृष्टिकोण स्केलेबल नहीं है और कोडबेस को बनाए रखना और विस्तारित करना कठिन बनाता है।
सार फ़ैक्टरी पैटर्न का उपयोग करके, आप संबंधित वस्तुओं (जैसे, बटन, चेकबॉक्स, स्क्रॉलबार) के परिवारों को बनाने के लिए एक इंटरफ़ेस बना सकते हैं और प्रत्येक लुक-एंड-फील मानक के लिए इस इंटरफ़ेस को कार्यान्वित कर सकते हैं। इस तरह, क्लाइंट कोड घटकों के निर्माण की बारीकियों को जाने बिना किसी भी लुक-एंड-फील मानक के साथ काम कर सकता है।
एक फर्नीचर फैक्ट्री पर विचार करें जो क्लासिक और आधुनिक जैसी विभिन्न शैलियों में कुर्सियाँ और टेबल बनाती है।
प्रत्येक शैली के लिए घटकों (जैसे, पैर, बैकरेस्ट, आर्मरेस्ट) और सामग्री (जैसे, लकड़ी, धातु, प्लास्टिक) के एक अलग सेट की आवश्यकता होती है।
package main import "fmt" // Abstract Factory type FurnitureFactory interface { MakeChair() Chair MakeTable() Table } func NewFurnitureFactory(style string) (FurnitureFactory, error) { if style == "classic" { return &Classic{}, nil } if style == "modern" { return &Modern{}, nil } return nil, fmt.Errorf("Style %s is not supported", style) } type Chair struct { Name string Material string } type Table struct { Name string Material string } // Concrete Classic Factory type Classic struct{} func (a *Classic) MakeChair() Chair { return Chair{ Name: "Classic Chair", Material: "Wood", } } func (a *Classic) MakeTable() Table { return Table{ Name: "Classic Table", Material: "Wood", } } // Concrete Modern Factory type Modern struct{} func (n *Modern) MakeChair() Chair { return Chair{ Name: "Modern Chair", Material: "Plastic", } } func (n *Modern) MakeTable() Table { return Table{ Name: "Modern Table", Material: "Plastic", } } func main() { factory, _ := NewFurnitureFactory("classic") chair := factory.MakeChair() table := factory.MakeTable() fmt.Printf("Chair: %s\n", chair.Name) fmt.Printf("Table: %s\n", table.Name) factory, _ = NewFurnitureFactory("modern") chair = factory.MakeChair() table = factory.MakeTable() fmt.Printf("Chair: %s\n", chair.Name) fmt.Printf("Table: %s\n", table.Name) }
यह कोड विभिन्न शैलियों (क्लासिक और आधुनिक) में फर्नीचर (कुर्सियाँ और टेबल) बनाकर एब्सट्रैक्ट फ़ैक्टरी पैटर्न को प्रदर्शित करता है। यह संबंधित वस्तुओं के परिवार बनाने और प्रत्येक शैली के लिए ठोस कार्यान्वयन के लिए एक इंटरफ़ेस को परिभाषित करता है, जिससे आसान स्केलेबिलिटी और रखरखाव की अनुमति मिलती है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3