कैसे निर्धारित करें कि क्या डिज़ाइन पैटर्न सही तरीके से लागू किया गया है?


13

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

डिज़ाइन पैटर्न अवधारणा जटिल और समझने में कठिन है। जब लागू किया जाता है, तो यह कैसे निर्धारित किया जाए कि क्या कार्यान्वयन सही है और आवेदन में वास्तविक ढीली युग्मन है?


49
वहाँ एक है गंभीर डिजाइन पैटर्न हैं किस बारे में गलत धारणा है। वे जादू परी धूल नहीं हैं जो आप इसे बेहतर बनाने के लिए अपने आवेदन पर छिड़कते हैं। वे मुख्य रूप से एक आम शब्दावली हैं जो समस्याओं को हल करने के लिए आमतौर पर उपयोग किए जाने वाले तरीकों के बारे में बात करने में सक्षम हैं । मुझे पूरा यकीन है कि ऐसे कई लोग हैं जो "पैटर्न को सही ढंग से लागू करते हैं" दिन भर "पैटर्न" शब्द सुने बिना।
जोकिम सॉर

2
@JoachimSauer आपने अभी जो कहा है वह उस प्रकार का सामान है जिसे तकनीकी विश्वविद्यालयों को सिखाना चाहिए ... चूंकि मैं वर्तमान में एक छात्र हूं, यह वह चीज है जो वर्तमान में मुझे सबसे अधिक परेशान करती है।
राडू मुरझिया

1
@JoachimSauer वास्तव में यह गलत धारणा पैदा होती है क्योंकि एक ही पैटर्न के लिए कार्यान्वयन तकनीकों की विविधताएं हैं। उदाहरण के लिए एमवीसी और एमवीपी को लें, एक ही पैटर्न के जितने भी प्रोजेक्ट हैं, उतने ही बदलाव हैं।
RPK

@RPK +1, बहुत तथ्य यह है कि एमवीएक्स पैटर्न (एमवीसी, एमवीपी, एमवीए, एमवीवीएम आदि) के स्कोर स्पष्ट संकेत हैं कि चीजों को करने के लिए समान रूप से व्यवहार्य तरीके हैं।
मैटडावी

जवाबों:


3

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

वांछित विशेषताएँ:

  1. आपका कोड आधार इकाई स्तर पर परीक्षण करने योग्य है
  2. जब भी आप किसी भी परिवर्तन अनुरोध को लागू कर रहे हैं तो आप केवल संबंधित वर्गों के लिए परिवर्तन कर रहे हैं जो डोमेन में सह-संबंधित हैं।
  3. आपका कोड आधार सॉफ्टवेयर एन्ट्रापी प्रदर्शित नहीं कर रहा है ।

यदि आपका अभी भी वास्तविक पैटर्न नामों के साथ अपने कोड को पहचानने और टैग करने के लिए उत्सुक है, तो मैं गेंद को लुढ़काने के लिए निम्नलिखित क्रियाओं को करने की सलाह दूंगा।

  1. कुछ UML daigrams उत्पन्न करने के लिए अपने कोड आधार को रिवर्स इंजीनियर करें।
  2. दृष्टि संदर्भ सामग्री के किसी भी तैयार संदर्भ के साथ आरेखों की तुलना करें ।

यह आपको एक उचित विचार देना चाहिए।


क्या आप तीसरे के बारे में अधिक विस्तार से बता सकते हैं?
निंग

19

आप डिजाइन पैटर्न और युग्मन दोनों का उल्लेख करते हैं। ये अलग अवधारणाएँ हैं इसलिए मैं उनके साथ अलग से व्यवहार करूँगा। एकमात्र वास्तविक संबंध यह है कि डिजाइन पैटर्न ढीले युग्मन को बढ़ावा देते हैं (क्योंकि यह अच्छे डिजाइन का एक प्रमुख पहलू है)।

डिजाइन पैटर्न्स

डिज़ाइन पैटर्न की अवधारणा वास्तव में काफी सरल है: वे विभिन्न सामान्य समस्याओं से निपटने के तरीके का एक सेट हैं। 2 मुख्य कारण हैं कि वे लोकप्रिय हैं:

  1. वे 'सिद्ध' हैं: उनका उपयोग कई बार होने से पहले किया गया है और प्रत्येक के लाभ / कमियां आम तौर पर ज्ञात हैं, विशेष रूप से किसी भी सूक्ष्म मुद्दों के कारण जो बड़ी समस्याएं पैदा कर सकते हैं।
  2. वे शब्दावली का एक सामान्य सेट प्रदान करते हैं, और इसलिए आसान संचार सक्षम करते हैं। यदि कोई कहता है कि "दसवीं कक्षा पर्यवेक्षक पैटर्न में पर्यवेक्षक की भूमिका निभाता है" तो डेवलपर्स जो पैटर्न से परिचित हैं वे तुरंत समझ सकते हैं कि क्या चल रहा है।

आप कैसे जानते हैं कि आपने इसे सही तरीके से लागू किया है? यह एक मुश्किल है। अधिकांश पैटर्न के लिए यह सरल है - आपने या तो इसे ग्रोकेड किया है या आपने नहीं किया है। कुछ पैटर्न दूसरों की तुलना में कम स्पष्ट रूप से परिभाषित हैं - जैसे मॉडल-व्यू-कंट्रोलर । सामान्य दिशानिर्देश के रूप में इस तरह के पैटर्न बेहतर उपयोग किए जाते हैं। आप इसे कैसे लागू करते हैं इसकी बारीकियां उन कारणों को समझने से कम महत्वपूर्ण हैं जो पैटर्न मौजूद हैं और यह पूरा करने के लिए क्या है।

डिजाइन पैटर्न 'एक सही तरीका' नहीं हैं। अक्सर आपको या तो उन्हें अपने विशिष्ट उद्देश्यों के लिए अनुकूलित करने की आवश्यकता होती है, या कभी-कभी कोई भी पैटर्न नहीं होगा जो आवश्यकताओं को फिट करता है। एक डिज़ाइन पैटर्न मजबूर करना जहां यह फिट नहीं है एक बुरा विचार है; यह वास्तव में एक अच्छा हथौड़ा का उपयोग करने जैसा है जब आप वास्तव में चाहते हैं कि एक पेचकश है।

युग्मन

यह कंप्यूटर विज्ञान में एक बहुत महत्वपूर्ण विचार है। चूंकि अधिकांश सॉफ्टवेयर प्रोजेक्ट्स की आवश्यकताएं समय के साथ बदलती हैं (कभी-कभी महत्वपूर्ण रूप से) तो डिजाइन में बदलावों का सामना करने की क्षमता महत्वपूर्ण है। युग्मन मूल रूप से "इस घटक को दूसरे के लिए स्वैप करना कितना कठिन होगा?" 'घटक' एक विधि, वर्ग, पैकेज, पुस्तकालय आदि हो सकता है।

इस विकिपीडिया लेख में विभिन्न प्रकार के युग्मन सूचीबद्ध हैं ।


2

जवाब वास्तव में उद्देश्य है कि आप शुरू से ही डिजाइन पैटर्न लिखना चाहते हैं। आप के लिए लचीलापन क्यों चाहते हैं?

वह परिवर्तन है; आवश्यकताएँ बदल जाती हैं। अपनी आवश्यकताओं में कुछ बदलने की कोशिश करें जो कोड परिवर्तन को दर्शाता है और देखें कि ऐसा करना कितना आसान / कठिन है।


-1

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

डिज़ाइन पैटर्न स्वयं ऑब्जेक्ट ओरिएंटेड डिज़ाइन सिद्धांतों का कार्यान्वयन है। जब तक आप इन सिद्धांतों का पालन करते हैं, आपके आवेदन लचीले और मापनीय होने जा रहे हैं; भले ही आप वास्तव में एक वास्तविक डिजाइन पैटर्न नहीं है। जैसा कि जोआचिम सॉयर ने ऊपर टिप्पणी की है, वे सामान्य समस्याओं के सामान्य समाधान हैं।


2
IMO, डिज़ाइन पैटर्न का उपयोग करने का स्केलेबिलिटी से कोई लेना-देना नहीं है। यह कोड में सामान्य पैटर्न को पहचानने के लिए बस एक शब्दावली है ताकि हम उनके बारे में बात कर सकें। अक्सर, स्केलिंग एप्लिकेशन का मतलब प्रदर्शन के पक्ष में अच्छे डिजाइनों के खिलाफ हो सकता है।
एड्रियन श्नाइडर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.