फैक्ट्री मेथड पैटर्न एक डिज़ाइन पैटर्न है जो वस्तुओं के सटीक वर्ग को निर्दिष्ट किए बिना वस्तुओं के निर्माण की अनुमति देता है। बनाई जाने वाली वस्तु. इस पैटर्न का उपयोग अक्सर तब किया जाता है जब बनाई जाने वाली वस्तु का वर्ग रनटाइम पर निर्धारित किया जाता है, या जब विभिन्न प्रकार की वस्तुओं को बनाने के लिए एक समान इंटरफ़ेस प्रदान करने की आवश्यकता होती है।
सी में, कई तरीके हैं फ़ैक्टरी विधि पैटर्न को लागू करने के लिए। एक सामान्य दृष्टिकोण स्थैतिक फ़ैक्टरी विधियों का उपयोग करना है जो उस वर्ग के भीतर परिभाषित होते हैं जिसके लिए ऑब्जेक्ट बनाए जाने हैं। उदाहरण के लिए, निम्नलिखित कोड दिखाता है कि कक्षा Vec2 की वस्तुओं को बनाने के लिए एक स्थिर फ़ैक्टरी विधि का उपयोग कैसे किया जा सकता है:
struct Vec2 { static Vec2 fromCartesian(float x, float y); static Vec2 fromPolar(float angle, float magnitude); // ... };
फ़ैक्टरी विधि पैटर्न को लागू करने का एक अन्य तरीका फ़ैक्टरी विधियों को एक अलग वर्ग में परिभाषित करना है। उदाहरण के लिए, निम्नलिखित कोड दिखाता है कि फ़ैक्टरी क्लास का उपयोग क्लास Foo की ऑब्जेक्ट बनाने के लिए कैसे किया जा सकता है:
class FooFactory { public: Foo* createFooInSomeWay(float x, float y); // ... };
हालांकि इन दोनों दृष्टिकोणों का उपयोग फैक्ट्री विधि पैटर्न को लागू करने के लिए किया जा सकता है, उनके बीच कुछ महत्वपूर्ण अंतर हैं।
की पसंद किस दृष्टिकोण का उपयोग करना है यह एप्लिकेशन की विशिष्ट आवश्यकताओं पर निर्भर करता है। सामान्य तौर पर, स्थैतिक फ़ैक्टरी विधियाँ अधिक सुविधाजनक और उपयोग में आसान होती हैं, लेकिन फ़ैक्टरी कक्षाएं अधिक लचीलापन और नियंत्रण प्रदान करती हैं।
यह ध्यान रखना महत्वपूर्ण है कि फ़ैक्टरी विधि पैटर्न कोई चांदी की गोली नहीं है। इसका उपयोग हर स्थिति में नहीं किया जाना चाहिए, और यह हमेशा ऑब्जेक्ट बनाने का सबसे अच्छा तरीका नहीं है। हालाँकि, यह आपके शस्त्रागार में एक उपयोगी पैटर्न हो सकता है, और इसका उपयोग आपके अनुप्रयोगों के डिज़ाइन और लचीलेपन को बेहतर बनाने के लिए किया जा सकता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3