तो शायद कई लोगों की तरह, मैं अक्सर खुद को डिजाइन की समस्याओं के साथ सिरदर्द में भागता हुआ पाता हूं, उदाहरण के लिए, कुछ डिज़ाइन पैटर्न / दृष्टिकोण हैं जो समस्या को सहज रूप से फिट करने के लिए लगता है और इसके वांछित लाभ हैं। बहुत बार कुछ कैविएट होता है जो किसी तरह के काम के बिना पैटर्न / दृष्टिकोण को लागू करना मुश्किल बनाता है जिसके बाद पैटर्न / दृष्टिकोण के लाभ को नकार देता है। मैं बहुत आसानी से कई पैटर्न / दृष्टिकोणों के माध्यम से पुनरावृत्ति को समाप्त कर सकता हूं क्योंकि अनुमानित रूप से उनमें से लगभग सभी वास्तविक दुनिया की स्थितियों में कुछ बहुत ही महत्वपूर्ण चेतावनी हैं जिनमें बस एक आसान समाधान नहीं है।
उदाहरण:
मैं आपको एक काल्पनिक उदाहरण देता हूँ जो हाल ही में सामने आए एक वास्तविक पर आधारित है। मान लीजिए कि मैं वंशानुक्रम पर रचना का उपयोग करना चाहता हूं क्योंकि वंशानुगत पदानुक्रमों ने अतीत में कोड की मापनीयता में बाधा उत्पन्न की है। मैं कोड को रिफ्लेक्टर कर सकता हूं, लेकिन फिर पता चलता है कि कुछ संदर्भ हैं जहां सुपरक्लास / बेसक्लस को केवल उपवर्ग पर कार्यक्षमता को कॉल करने की आवश्यकता है, इसके बावजूद प्रयास करने से बचें।
अगला सबसे अच्छा तरीका एक आधा प्रतिनिधि / पर्यवेक्षक पैटर्न और आधा रचना पैटर्न लागू करना प्रतीत होता है ताकि सुपरक्लास व्यवहार को प्रतिनिधि कर सके या ताकि उपवर्ग सुपरक्लास घटनाओं का निरीक्षण कर सके। तब वर्ग कम स्केलेबल और रख-रखाव करने योग्य होता है क्योंकि इसकी अस्पष्टता को कैसे बढ़ाया जाना चाहिए, यह भी मौजूदा श्रोताओं / प्रतिनिधियों को विस्तारित करने के लिए मुश्किल है। जानकारी भी अच्छी तरह से छिपी नहीं है क्योंकि किसी को सुपरक्लास का विस्तार करने के लिए कार्यान्वयन को जानना आवश्यक है (जब तक कि आप टिप्पणियों का बड़े पैमाने पर उपयोग नहीं करते हैं)।
इसलिए इसके बाद मैं केवल पर्यवेक्षकों या प्रतिनिधियों का उपयोग करने का विकल्प चुन सकता हूं, जो कि कमियों को दूर करने के लिए पूरी तरह से दृष्टिकोण को मिलाकर आता है। हालाँकि यह अपनी समस्याओं के साथ आता है। उदाहरण के लिए, मैं पा सकता हूं कि मुझे व्यवहार की बढ़ती मात्रा के लिए पर्यवेक्षकों या प्रतिनिधियों की आवश्यकता है, जब तक कि मुझे व्यावहारिक रूप से प्रत्येक व्यवहार के लिए पर्यवेक्षकों / प्रतिनिधियों की आवश्यकता नहीं है। एक विकल्प हो सकता है कि सभी व्यवहारों के लिए सिर्फ एक बड़ा श्रोता / प्रतिनिधि हो, लेकिन फिर कार्यान्वयन वर्ग बहुत सारे खाली स्थान आदि के साथ समाप्त हो जाता है।
फिर मैं एक और दृष्टिकोण की कोशिश कर सकता हूं, लेकिन इसके साथ कई मुद्दे हैं। फिर अगला एक, और एक के बाद एक आदि।
यह पुनरावृत्ति प्रक्रिया बहुत मुश्किल हो जाती है जब प्रत्येक दृष्टिकोण को दूसरों के रूप में कई समस्याएं होती हैं और एक तरह के डिजाइन निर्णय पक्षाघात की ओर जाता है । यह स्वीकार करना भी मुश्किल है कि कोड समान रूप से समस्याग्रस्त हो जाएगा चाहे डिज़ाइन पैटर्न या दृष्टिकोण का उपयोग किया जाए। अगर मैं इस स्थिति में समाप्त हो जाता हूं तो क्या इसका मतलब यह है कि समस्या को खुद से दूर करने की आवश्यकता है? जब वे इस स्थिति का सामना करते हैं तो दूसरे क्या करते हैं?
संपादित करें: उस प्रश्न की व्याख्या की एक संख्या प्रतीत होती है जिसे मैं स्पष्ट करना चाहता हूं:
- मैंने ओओपी को पूरी तरह से प्रश्न से बाहर कर दिया है क्योंकि यह पता चला है कि यह वास्तव में ओओपी के लिए विशिष्ट नहीं है, साथ ही ओओपी के बारे में मुझे जो कुछ टिप्पणी करनी है, उसकी गलत व्याख्या करना बहुत आसान है।
- कुछ ने दावा किया है कि मुझे पुनरावृत्त दृष्टिकोण लेना चाहिए और विभिन्न पैटर्न आज़माना चाहिए, या जब मुझे काम करना बंद हो जाए तो मुझे एक पैटर्न को छोड़ देना चाहिए। यह वह प्रक्रिया है जिसका मैं पहली बार उल्लेख करना चाहता हूं। मुझे लगा कि यह उदाहरण से स्पष्ट है लेकिन मैं इसे स्पष्ट कर सकता था, इसलिए मैंने ऐसा करने के लिए प्रश्न को संपादित किया है।