c# - What are the negative consequences of using a real class as the superclass, rather than an abstract class in simple factory pattern? -
मैं इस तरह साधारण कारखाना पैटर्न का उपयोग करता हूं:
सार्वजनिक वर्ग के पिता {सार्वजनिक आभासी int field1 ; सार्वजनिक वर्चुअल इन्ट देवस्थ () {}} पब्लिक क्लास बेटा: पिताजी [आईआईएस वारियर 1 जनरेशन फादर जनसंपर्क से लेकर इंसतम दोस्ती (); // फादर की पद्धति सार्वजनिक स्ट्रिंग ex_field; सार्वजनिक स्ट्रिंग स्ट्रिंग Ex_method () {}} सार्वजनिक वर्ग फ़ैक्टरी {सार्वजनिक स्थिर फादर CreateObj (स्ट्रिंग हालत) {स्विच (हालत) {case ("F"): नया पिता () लौटें; मामले ("एस"): नया बेटा () लौटें; डिफ़ॉल्ट: नया अपवाद फेंकना ("आपके पास कोई विकल्प नहीं है"); }}} , मैं कारखाने वर्ग के रूप में एक अमूर्त वर्ग के बजाय एक वास्तविक वर्ग का उपयोग करता हूं। क्योंकि कक्षा बेटा में पिता वर्ग के कुछ हिस्सों में कुछ विस्तार हुआ है (सबसे संदर्भ पिता का उपयोग कर सकते हैं)। अगर पिता और बेटे प्रत्येक के द्वारा एक अमूर्त वर्ग का वारिस करते हैं। पुत्र पुत्र पिता के खेतों और विधियों का वारिस नहीं कर सकता तो मेरा प्रश्न यह है कि भविष्य में अगर कुछ अच्छा नहीं होता है तो मुझे कुछ भी अच्छा नहीं लगता है (मुझे अच्छा नहीं लगता, लेकिन बेहतर नहीं मिल सकता है)? क्या कोई बेहतर तरीका है?
यदि आपकी कक्षाओं में सामान्य उपयोग में कोई इंटरफ़ेस नहीं है और फ़ैक्ट्री ऑब्जेक्ट्स बनती है विशिष्ट वर्ग के बजाय एक विशिष्ट इंटरफ़ेस है
आम क्षेत्रों / विधियों के साथ एक इंटरफ़ेस बनाएं और दोनों पिता और बेटे को इसे लागू करें:
सार्वजनिक इंटरफ़ेस IFamily {int field1 ; इंति द्वेश (); } सार्वजनिक वर्ग पिता: एब्स्ट्रेट ए, आईफ़ैमिली {// कार्यान्वयन यहाँ इंट फ़ील्ड 1; इंति द्वेश () {// जादुई}} पब्लिक क्लास बेटा: एब्स्ट्रब बी, आईफ़ैमिली {// इम्प्लिमेंटेशन यहाँ इन्ट मैट 1; इंटेल डॉटह () {// Do Magic}} आपका कारखाना तब होगा:
सार्वजनिक वर्ग फ़ैक्टरी {सार्वजनिक स्थिर IFamily CreateObj (स्ट्रिंग हालत) {स्विच (हालत) {मामला ("एफ"): नया पिता वापस आओ (); मामले ("एस"): नया बेटा () लौटें; डिफ़ॉल्ट: नया अपवाद फेंकना ("आपके पास कोई विकल्प नहीं है"); }}} यह क्रियान्वयन गहरी वारंटस पदानुक्रम बनाने के लिए किया जाता है।
Comments
Post a Comment