क्या आपके आवेदन में कई सार कक्षाएं होना ठीक है?


9

हम शुरू में एक कमोन इंटरफेस में तरीकों के अलग-अलग कार्यान्वयन के साथ एक रणनीति पैटर्न लागू करना चाहते थे। ये यूजर इनपुट के आधार पर रनटाइम पर उठेंगे।

जैसा कि यह पता चला है, हम सार कक्षाएं लागू कर रहे हैं 3 - 5 सामान्य तरीके और केवल एक विधि एक अलग कार्यान्वयन यानी रणनीति के लिए छोड़ दिया है

अपडेट: कई अमूर्त वर्गों से मेरा मतलब है कि 6 अलग-अलग उच्च स्तर की कार्यक्षमताएं हैं यानी 6 पैकेज हैं, और प्रत्येक में इंटरफ़ेस + AbstractImpl + (वास्तविक इंप्ल की श्रृंखला) है।

क्या यह किसी भी तरह से खराब डिजाइन है?

बाद में विलुप्त होने के संदर्भ में कोई नकारात्मक विचार - मैं वरिष्ठों के साथ एक कोड / डिज़ाइन समीक्षा की तैयारी कर रहा हूं।

जवाबों:


8

नहीं, यह किसी भी तरह से एक खराब डिजाइन नहीं है। यह एक टेम्पलेट विधि पैटर्न है

यह एक एल्गोरिथ्म कदम के अलग-अलग व्यवहार को एनकैप्सुलेट करने के लिए है, जो संभवतः आपके परिदृश्य में मामला है। रणनीति और टेम्पलेट विधि पैटर्न कई मामलों में एक मजबूत संयोजन बनाते हैं । संभवतः आपके पास एक फ्रेम के रूप में सार रणनीतियाँ हैं और ठोस रणनीतियों के लिए टेम्पलेट विधि पैटर्न का उपयोग करें। यह बहुत साफ है।

यह एक्स्टेंसिबल है और आपको कोड दोहराने की भी आवश्यकता नहीं है। जब आपको पूरी तरह से कुछ अलग करने की आवश्यकता होती है, तो बस एक नया सार या ठोस रणनीति बनाने के लिए रणनीति इंटरफ़ेस का उपयोग करें।


4

नहीं, यह काफी ठीक हो सकता है (विवरण के आधार पर - आपके ठोस मामले के बारे में इस छोटे से ज्ञान के साथ अधिक कहना कठिन है)। अमूर्त आधार वर्ग में सामान्य पद्धति के कार्यान्वयन को एकजुट करना पूरी तरह से ठीक है।

आपकी कक्षाओं में एकल सार पद्धति का उपयोग कैसे किया जाता है, इस पर निर्भर करते हुए, यह पैटर्न रणनीति के बजाय खाका विधि हो सकता है । अर्थात्, अगर इसे बाहरी दुनिया के बजाय सीधे आधार वर्ग में अंतिम विधि द्वारा कहा जाता है।


1

टेम्प्लेट मेथड पैटर्न अमूर्त विधि द्वारा विशेष कोड को लागू करने के लिए उपवर्ग बनाते हैं और उपवर्ग अधिगम से सामान्य विधि विरासत में मिलती है। इसलिए मुझे नहीं लगता कि इसमें कई सार वर्ग हैं, यह केवल एक सार वर्ग है, सभी उपवर्ग उदाहरण वर्ग है।


0

यदि अमूर्त वर्ग एक ही सामग्री के साथ समान विधियों का अर्थ कर रहे हैं, तो कई सार वर्ग क्यों हैं?

अगर वे तरीकों को अलग तरीके से समझ रहे हैं तो मुझे कोई समस्या नहीं दिखती।

एक्स्टेंसिबिलिटी उपयोग इंटरफेस में सुधार करने के लिए, यह एक समस्या से कम है यदि आप तब अमूर्त वर्ग को स्क्रैप करते हैं (तों)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.