यह सवाल मेरे लिए समय पर है - मैं कल लगभग ऐसे ही कोड लिख रहा था। मेरी परियोजना में जो भी प्रासंगिक है, उसके साथ "पशु" को बदलें, हालांकि मैं यहां चर्चा के लिए "पशु" के साथ रहूंगा। 'स्विच' स्टेटमेंट के बजाय, मेरे पास 'if' स्टेटमेंट्स की कुछ अधिक जटिल सीरीज़ थीं, जिनमें एक वेरिएबल की तुलना कुछ निश्चित मानों से अधिक थी। लेकिन यह एक विस्तार है। एक स्थिर फैक्टरी विधि चीजों को डिजाइन करने के लिए एक साफ तरीके की तरह लग रहा था, जैसा कि डिजाइन कोड के पहले त्वरित-और-गंदे गंदगी को फिर से बनाने से उभरा था।
मैंने इस डिजाइन को आधार वर्ग के आधार पर खारिज कर दिया, जिसमें व्युत्पन्न वर्ग का ज्ञान था। यदि कक्षाएं LandAnimal और SeaAnimal छोटी, साफ और आसान हैं, तो वे एक ही स्रोत फ़ाइल में हो सकती हैं। लेकिन मेरे पास किसी भी आधिकारिक रूप से परिभाषित मानकों के अनुरूप नहीं होने वाली पाठ फ़ाइलों को पढ़ने के लिए बड़ी गन्दी विधियाँ हैं - मैं चाहता हूँ कि मेरा LandAnimal वर्ग इसके अन्य स्रोत फ़ाइल में हो।
यह परिपत्र फ़ाइल निर्भरता की ओर जाता है - LandAnimal पशु से ली गई है, लेकिन पशु को पहले से ही पता है कि LandAnimal, SeaAnimal और पंद्रह अन्य वर्ग मौजूद हैं। मैंने फैक्ट्री मेथड को बाहर निकाला, अपनी खुद की फाइल में डाला (मेरे मुख्य एप्लिकेशन में, मेरे एनिमल्स लाइब्रेरी में नहीं) एक स्थिर फैक्ट्री मेथड प्यारा और चालाक लग रहा था, लेकिन मुझे एहसास हुआ कि यह वास्तव में किसी भी डिज़ाइन की समस्या को हल नहीं करता है।
मुझे पता नहीं है कि यह मुहावरेदार सी # से कैसे संबंधित है, चूंकि मैं भाषाओं को बहुत अधिक स्विच करता हूं, मैं आमतौर पर मुहावरों और सम्मेलनों की अजीबोगरीब भाषा और अपने सामान्य काम के बाहर देव ढेर के लिए उपेक्षा करता हूं। अगर कुछ भी मेरा C # सार्थक हो तो "पाइथोनिक" दिख सकता है। मैं सामान्य स्पष्टता का लक्ष्य रखता हूं।
इसके अलावा, मुझे नहीं पता कि भविष्य के काम में विस्तारित होने की संभावना छोटे, सरल वर्गों के मामले में स्थिर कारखाना विधि का उपयोग करने का कोई फायदा होगा - यह सब एक स्रोत फ़ाइल में होने से कुछ मामलों में अच्छा हो सकता है।