उपयोग दोनों मामलों में सरल है, लेकिन अन्य की तुलना में Parser1 के पैरामीटर इनपुट को सक्षम करने का क्या मतलब है?
इसका एक मौलिक डिज़ाइन शिफ्ट है। और डिजाइन इरादे और अर्थ को व्यक्त करना चाहिए। क्या आपको पार्स करने के लिए हर स्ट्रिंग के लिए अलग-अलग ऑब्जेक्ट्स की आवश्यकता है? दूसरे शब्दों में, हमें स्ट्रिंग के साथ पार्सर के उदाहरण और स्ट्रिंग के साथ एक और उदाहरण की आवश्यकता क्यों है? यह पार्स (आईएनजी) और दिए गए तार के बारे में क्या है कि दोनों को एक साथ रहना और मरना होगा? यह मानते हुए कि "अंतर्निहित [पार्सिंग] कार्यान्वयन" (जैसा कि रॉबर्ट हार्वे कहते हैं) नहीं बदलता है, कोई मतलब नहीं है। और फिर भी इसके संदिग्ध आई.एम.एच.ओ.
विधि मापदंडों के बजाय कंस्ट्रक्टर को डेटा पास करते समय एक वर्ग की अवधारणा कैसे बदल जाती है?
निर्माता पैरामीटर मुझे बताते हैं कि इन चीजों को एक वस्तु के लिए आवश्यक है। उनके बिना उचित राज्य की गारंटी नहीं है। इसके अलावा, मुझे पता है कि कैसे / क्यों एक पार्सर मौलिक रूप से दूसरे से अलग है।
कक्षा का उपयोग करने के तरीके के बारे में बहुत अधिक जानने के लिए निर्माता पैरामीटर मुझे रखते हैं। अगर इसके बजाय मुझे कुछ संपत्तियों को सेट करना है - तो मुझे कैसे पता चलेगा? कीड़े की एक पूरी खोल सकता है। क्या गुण? किस क्रम में? इससे पहले कि मैं किन विधियों का उपयोग करूं? और इसी तरह।
एक और सवाल तब उठता है जब मुझे एहसास होता है कि दूसरे कार्यान्वयन में एक इंटरफ़ेस काफी अर्थहीन होगा:
एपीआई के रूप में एक इंटरफ़ेस, क्लाइंट कोड के लिए तरीके और गुण हैं। public interface { ... }विशेष रूप से लिपटे मत रहो । तो इंटरफ़ेस का अर्थ या तो या कंस्ट्रक्टर बनाम विधि पैरामीटर दुविधा में है, न कि public interface Iparserबनामpublic sealed class Parser
sealedवर्ग अजीब है। यदि मैं अलग-अलग पार्सर कार्यान्वयनों के बारे में सोच रहा हूं - आपने "इपरसेर" का उल्लेख किया है - तो विरासत मेरा पहला विचार है। यह मेरी सोच में एक स्वाभाविक वैचारिक विस्तार है। IE सभी ParserXs मौलिक रूप से Parsers हैं। इसे और कैसे कहें? ... एक जर्मन शेपर्ड एक कुत्ता (विरासत) है, लेकिन मैं अपने तोते को छाल (एक कुत्ते की तरह काम कर सकता हूं - "इंटरफ़ेस") को प्रशिक्षित कर सकता हूं; लेकिन पोली एक कुत्ता नहीं है, केवल दिखावा कर रहा है, जिसने कुत्ते का एक उपसमुच्चय सीखा है। कक्षाएं, सार या अन्यथा, इंटरफेस के रूप में अच्छी तरह से सेवा करते हैं ।