ऑब्जेक्ट-ओरिएंटेड कोड लिखते समय, क्या मुझे हमेशा एक डिज़ाइन पैटर्न का पालन करना चाहिए?


37

क्या किसी वस्तु-उन्मुख कार्यक्रम के लिए एक बोधगम्य डिजाइन पैटर्न है? मैं यह पूछता हूं क्योंकि हाल ही में मैंने एक Doorवर्ग के कार्यान्वयन को देखा था Lock। यह एक परीक्षण का हिस्सा था और जवाब में कहा गया था कि कोड नल ऑब्जेक्ट पैटर्न का अनुसरण कर रहा है:

class Lock
{
public:
    virtual void close() = 0;
    virtual void open() = 0;
    virtual bool is_open() const = 0;
    virtual ~Lock() { }
};

class DummyLock
    : public Lock
{
private:
    DummyLock();
    DummyLock(const DummyLock&) = delete;
    DummyLock& operator=(const DummyLock&) = delete;

private:
    void close() { }
    void open() { }
    bool is_open() const { return true; }

public:
    static DummyLock m_instance;
};

class Door
{
public:
    Door() : m_lock(DummyLock::m_instance) { }
    Door(Lock &lock) : m_lock(lock) { }

public:
    Lock& get_lock() const { return m_lock; }

private:
    Lock &m_lock;
};

इससे मुझे लगता है: यह कोड अच्छे डिज़ाइन पैटर्न का अनुसरण करता है, भले ही विवरण इतना सरल हो (यह वर्ग एक लॉक के साथ एक डोर क्लास डिजाइन कर रहा है), इसलिए यदि मैं अधिक जटिल कोड लिख रहा हूं, तो क्या हमेशा कुछ डिज़ाइन पैटर्न होना चाहिए कि मैं पीछा कर रहा हूँ?



51
क्या आपको लगता है कि आप पूरी तरह से मुहावरों में बोल सकते हैं? नहीं? फिर आपको अपने कार्यक्रमों का निर्माण एक साथ डिज़ाइन पैटर्न के अनुसार करना चाहिए।
किलियन फोथ

4
आपके उदाहरण में, नल ऑब्जेक्ट पैटर्न केवल शैक्षणिक उद्देश्यों के लिए जोड़ा गया है, यह इस कोड में "एक अच्छा डिज़ाइन" नहीं पेश करता है।
डॉक्टर ब्राउन 19

4
@djechlin: दूसरे शब्दों में, "दो शब्द" डिजाइन पैटर्न का उपयोग करें :)
माइकल शॉ

11
समस्या यह है कि बहुत से लोग मानते हैं कि डिजाइन पैटर्न विचार का एक विकल्प है, और अनुभव का एक विकल्प है (जो एक निश्चित मात्रा में परीक्षण और त्रुटि का अर्थ है)। आप गैर-तुच्छ आकार और जटिलता और सभ्य गुणवत्ता के साथ एक एप्लिकेशन का निर्माण करने के लिए डिज़ाइन पैटर्न से भरी किताब नहीं ले सकते हैं और उन्हें टिंकर खिलौने की तरह एक साथ रख सकते हैं। यहां तक ​​कि अनुभवी प्रोग्रामर को भी दो या तीन डिजाइनों की कोशिश करने की आवश्यकता होती है इससे पहले कि वे एक काम करते हैं।
डैनियल आर हिक्स

जवाबों:


143

क्या हमेशा कुछ डिज़ाइन पैटर्न होना चाहिए जो मैं अनुसरण कर रहा हूं?

प्रिय भगवान नहीं!

मेरा मतलब है, आप आगे जा सकते हैं और कह सकते हैं कि कोई भी यादृच्छिक कोड कुछ यादृच्छिक XYZ पैटर्न का पालन कर रहा है, लेकिन यह मेरे कंप्यूटर कुर्सी के राजा होने का दावा करने से ज्यादा उपयोगी नहीं है। किसी और को वास्तव में नहीं पता है कि इसका क्या मतलब है और यहां तक ​​कि जो लोग मेरे दावे का सम्मान नहीं करेंगे।

डिज़ाइन पैटर्न एक संचार उपकरण है जिससे प्रोग्रामर अन्य प्रोग्रामर को बता सकते हैं कि क्या किया गया है या क्या किया जाना चाहिए जो बिना समय गंवाए खुद को दोहराए। और जब से वे चीजें हैं जो कई बार सामने आती हैं, वे प्रोग्रामर के लिए "हे, सीखने के लिए उपयोगी अवधारणाएं हैं, जिससे XYZ हमेशा ऊपर आने लगता है क्योंकि यह अच्छा / उपयोगी है"।

वे नहीं करते आप खुद के लिए सोचने के लिए के लिए की जरूरत, दर्जी के लिए पैटर्न आप के सामने अद्वितीय समस्या के लिए अपरिहार्य चीजें हैं जो अच्छा बाल्टी में फिट नहीं है के सभी संभाल करने की जगह, या।


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

11
@ करद: यकीन है, जब तक आप भगवान कक्षाओं में भी लिखने का वादा नहीं करते हैं!
yatima2975

9
जॉन डो - तकनीकी अभियंता, जेनेरिक कोड बंदर और उनकी कंप्यूटर कुर्सी के राजा
hjk

1
यकीनन, एक डिज़ाइन को उन पैटर्नों का उपयोग करना चाहिए जहाँ उपयुक्त और कक्षाओं को इस तरह नामित किया जाना चाहिए। वे महत्वपूर्ण उपकरण हैं। the_cult(Tm) से डरना उतना ही खतरनाक है।
गुस्सोर

25
बहुत बढ़िया जवाब! मेरी एक आलोचना यह है कि "प्रिय भगवान नहीं!" बहुत बड़ा नहीं है।
tobyink' करें

37

नहीं।

यह गैंग ऑफ़ फोर (जो मूल रूप से लोकप्रिय डिज़ाइन पैटर्न है) को अपनी पुस्तक में इसके बारे में कहना था :

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

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

गलत दृष्टिकोण यह मान रहा है कि सिर्फ इसलिए कि इसे "डिज़ाइन पैटर्न" लेबल किया गया है, यह अच्छा होना चाहिए, और फिर अधिक पैटर्न को रटना करने के लिए और अधिक स्थानों की तलाश में है। जब वे कार्यक्रम को फिट करते हैं तो उनका उपयोग करें और वास्तव में आपके लिए एक समस्या का समाधान करें।


7
डिजाइन पैटर्न: द एरिकस गामा, रिचर्ड हेल्म, राल्फ जॉनसन और जॉन व्लाइसीड्स द्वारा पुन: प्रयोज्य वस्तु-उन्मुख सॉफ्टवेयर के तत्व
developerwjk

4
+1 वास्तव में डिज़ाइन पैटर्न के स्रोत को उद्धृत करने के लिए।
फराट

29

यदि मैं अधिक जटिल कोड लिख रहा हूं, तो क्या हमेशा कुछ डिज़ाइन पैटर्न होना चाहिए जो मैं अनुसरण कर रहा हूं?

नहीं। डिजाइन पैटर्न सिर्फ इतना है कि: वस्तुओं के बीच संबंधों में पैटर्न । दूसरे शब्दों में, रिश्ते जो अक्सर उपयोग किए जाते हैं और पुन: उपयोग किए जाते हैं, किसी ने कहा कि "हम इसे बहुत कुछ कर रहे हैं, चलो इसे एक नाम दें।" डिजाइन पैटर्न की सूची OOP की शुरुआत में एक बार में निर्धारित नहीं की गई थी और फिर GOF द्वारा सौंप दी गई थी ! उन्हें खोजा गया और अंततः दस्तावेज किया गया, और फिर पुस्तक द्वारा लोकप्रिय किया गया।

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

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


10

डिजाइन पैटर्न के दो फायदे हैं

  1. वे अन्य डेवलपर्स का वर्णन करना आसान है, क्योंकि आमतौर पर लोग इस बात पर सहमत होते हैं कि पैटर्न क्या हैं
  2. वे हमारे पूर्ववर्तियों द्वारा बहुत सोच समझकर पीटे जाते हैं, इसलिए उनकी ताकत और कमजोरियों को अच्छी तरह से समझा जाता है।

हर कार्यक्रम के लक्ष्य होने चाहिए

  1. यह काम करता हैं। यह जो भी अंतिम लक्ष्य है, उसे करना है, या इससे कोई फर्क नहीं पड़ता कि आप कितने डिज़ाइन पैटर्न का उपयोग करते हैं। OO डिज़ाइन पैटर्न बिट्स को समझने में आसान समस्या को हल करना आसान बनाता है इसलिए यह काम करने में आसान साबित होता है।
  2. इसे पढ़ना आसान है। यह वह जगह है जहाँ डिजाइन पैटर्न अच्छे हैं। OO समस्याओं को हल करते हैं वे जटिल हैं। यदि आप उन्हें "मानक" तरीके से हल करते हैं, तो अगले डेवलपर पर यह आसान है
  3. इसे विकसित करना आसान है। लगभग 0 आधुनिक कार्यक्रम खत्म हो गए, जहां सभी ने उनकी योजना बनाई। हर कार्यक्रम अपनी प्रारंभिक रिलीज के बाद बढ़ता है। OO पैटर्न को बढ़ने में उत्सुकता से अच्छा होने के लिए जाना जाता है।

यह सब कहा जा रहा है, ध्यान दें कि ओओ डिजाइन पैटर्न के लिए हर संदर्भ है "वे काम पर बस अच्छे हैं।" वे परिपूर्ण नहीं हैं, लेकिन वे बहुत प्रभावी ढंग से एक जगह भरते हैं। जब वे काम करते हैं तो उनका उपयोग करें, जब वे न करें तो उनसे बचें।

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

जब भी वे आपके उत्पाद को बेहतर बनाते हैं, तो डिज़ाइन पैटर्न का उपयोग करें; जब वे आपके उत्पाद को खराब करते हैं, तो उनसे बचें।


2
मुझे लगता है कि अंतिम वाक्य बोल्ड या सारांश के रूप में शीर्ष पर होना चाहिए।
फराट

5

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

बिना किसी डिज़ाइन पैटर्न के एक गैर-तुच्छ कार्यक्रम इंगित करता है:

  • आपका कार्यक्रम इतना अनूठा है कि इसका कोई भी हिस्सा आम समस्याओं के समान नहीं है जो प्रोग्रामर पहले सामना कर चुके हैं। या
  • आपके कार्यक्रम में वे सामान्य समस्याएं हैं, लेकिन आपने उन्हें बेहतर तरीके से हल किया है जो पहले किसी ने नहीं सोचा था।

दोनों परिदृश्य अत्यधिक संभावना नहीं हैं, कोई अपराध नहीं है।

इसका मतलब यह नहीं है कि डिज़ाइन पैटर्न को आपके डिज़ाइन को चलाना चाहिए, या यह कि आपको एक अंधाधुंध डालना चाहिए क्योंकि आपको लगता है कि यह बुरा होगा यदि आप नहीं करते हैं। गलत डिजाइन पैटर्न किसी से भी बदतर नहीं है।

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

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

फर्क देखें? यह एक सूक्ष्म लेकिन महत्वपूर्ण अंतर है।


5
डिजाइन पैटर्न के मुकाबले कई और सामान्य समस्याएं (और उनके सामान्य समाधान) हैं। डिज़ाइन पैटर्न सामान्य OO समाधानों का एक सूचीबद्ध सबसेट हैं - सभी सामान्य समाधानों का सेट नहीं।
माइकल शॉ

1
क्या आप परिभाषित कर सकते हैं कि 'गैर-तुच्छ' से आपका क्या मतलब है, मैं इस धारणा के तहत था कि 'गैर-तुच्छ' शब्द व्यक्तिपरक था।
फराट

1
यह व्यक्तिपरक है। मेरा मतलब है कि जिस तरह का कार्यक्रम आप काम पर एक टीम पर लिखेंगे, उसके लिए एक निरंतर आधार पर कई अनुरक्षकों की आवश्यकता होगी।
कार्ल बेवफेल्ट

यदि आप बाद में अपनी समस्या को देखने के लिए पर्याप्त भाग्यशाली हैं । अशक्त जाँच, निश्चित। सुरक्षा कमजोरियां? अन्य कपटी तरीके से रखरखाव के तहत कार्यक्रम टूट जाएगा? समस्याएं केवल अगले इंजीनियर को उजागर करेगा? बहुत अधिक yucky।
djechlin

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

4

टूटा हुआ प्रश्न। मुझे आपको डिज़ाइन पैटर्न की एक उपन्यास परिभाषा देनी चाहिए जो कि GoF द्वारा जारी की गई बहुत सारी क्षति को कम कर देगी: एक डिज़ाइन पैटर्न एक अच्छा कोडिंग अभ्यास है । बस।

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

"डिज़ाइन पैटर्न" एक टूटी-फूटी शब्द है, जिसे GoF द्वारा प्रचलित किया गया है, जिससे यह लगता है कि सभी पैटर्न समान स्तर पर हैं या आपको डॉक्टर से अनुशंसित 3 से 5 प्रति वर्ग का उपयोग करना चाहिए। किसी भी समय आप कुछ सही करते हैं जो किसी और ने सही किया है, यह एक डिज़ाइन पैटर्न है । एक for(;;)एक आम उदाहरण के लिए एक अनंत लूप का प्रतिनिधित्व करने के लिए प्रयोग किया जाता पैटर्न है।

आपको डिज़ाइन पैटर्न का एक गुच्छा सीखने की कोशिश नहीं करनी चाहिए। प्रोग्रामिंग ज्ञान डिजाइन पैटर्न द्वारा अनुक्रमित नहीं है! बल्कि आपको सीखना चाहिए कि कैसे किताबें, ब्लॉग्स पढ़कर अच्छा कोड लिखें और अपने क्षेत्र में सम्मेलनों में भाग लें। उदाहरण के लिए, यदि आप पहले से निर्भरता इंजेक्शन का उपयोग कर रहे हैं, लेकिन अभी इसे लेबल नहीं किया है, तो आपको हमेशा DI का उपयोग करने या IoC ढांचे का उपयोग करने से लाभ हो सकता है । या अगर आप घटनाओं और कॉलबैक में सही कोड करने के लिए संघर्ष कर रहे हैं, तो हास्केल सीखें ताकि आप कार्यात्मक डिजाइन पैटर्न से परिचित हों और यह आसान हो जाए।

और अगर आपकी पूरी कक्षा एक बड़ी चीज के रूप में पढ़ती है जो किसी और ने सही किया है, तो आप पहिया को क्यों मजबूत कर रहे हैं? बस उनके सामान का उपयोग करें।


2
किस भाषा में for(;;)मुहावरेदार है? यह शायद किसी का सबसे अच्छा उदाहरण नहीं है जो किसी ने "सही" किया।
तेलस्टिन ऑक्ट

1
@ टेलस्टाइन सी, सी ++, जावा, जावास्क्रिप्ट, सी #।
djechlin

2
मैंने कभी नहीं देखा कि मेरी 20+ वर्षों की प्रोग्रामिंग में C, C ++, Java, या C # में से कोई भी उस while(true)(या while(1)) को पसंद नहीं करता है।
तेलस्टिन

1
@Telastyn stackoverflow.com/a/2611744/1339987 fwiw को मैंने (सच में) पसंद करना शुरू कर दिया क्योंकि यह मेरे लिए अधिक पठनीय लगता है।
djechlin

1
मैं हमेशा (;) के लिए उपयोग करता हूं; कोई विशेष कारण नहीं, मैंने इसे शायद कहीं पढ़ा। मुझे यह तथ्य पसंद है कि इसमें कोई चर या अड़चन शामिल नहीं है। वैसे भी, @Telastyn अब आप किसी से मिले हैं
चींटी

0

आपको हमेशा ओओ डिजाइन सिद्धांतों (जैसे, प्रतिरूपकता, सूचना छिपाना, उच्च सामंजस्य आदि) का पालन करना चाहिए । डिजाइन पैटर्न OO डिजाइन सिद्धांतों की एक अपेक्षाकृत परिष्कृत आला कर रहे हैं, खासकर अगर आप समझते हैं KISS सिद्धांत

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

एक पैटर्न का उपयोग कब करना है, यह जानना इतना आसान नहीं है। कुछ पैटर्न निम्न स्तर के होते हैं, कोडिंग के करीब और समाधान स्थान (जैसे, सिंगलटन, नल ऑब्जेक्ट, इटरेटर)। दूसरों को समस्या स्थान में आवश्यकताओं से प्रेरित किया जाता है (जैसे, पूर्ववत / फिर से समर्थन करने के लिए कमांड पैटर्न, कई इनपुट / आउटपुट फ़ाइल का समर्थन करने की रणनीति)।

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


0

पैटर्न आम समस्याओं का सामान्य समाधान है। हम हमेशा कुछ पैटर्न का पालन कर रहे हैं, GoF द्वारा पैटर्न सबसे अधिक आवर्ती लोगों को संबोधित करते हैं। सॉफ्टवेयर इंजीनियरों के लिए जाना जाता है कि एक साझा समझ और साझा दृष्टिकोण है।

उस ने कहा, मेरा जवाब नहीं है, लेकिन हां आप हमेशा अपने खुद के कुछ पैटर्न का पालन कर रहे हैं। जैसे ही GoF इसे सही तरीके से बताता है-

एक व्यक्ति का पैटर्न दूसरे व्यक्ति की आदिम इमारत ब्लॉक है।

शानदार बोली।


इससे पहले किए गए 7 अंकों के बारे में कुछ भी बताने की जरूरत नहीं है और पहले 7 जवाबों में समझाया गया है
gnat

ठीक। ध्यान दें, मैंने एक सामान्य बिंदु बनाया ... यह एक सैद्धांतिक चर्चा के रूप में डिज़ाइन पैटर्न पर लागू है।
सैयद प्रॉम

"यह साइट जवाब पाने के बारे में है । यह एक चर्चा मंच नहीं है ..." ( दौरा )
gnat

मैंने सवाल का जवाब दिया। धन्यवाद। यह बातचीत यहीं समाप्त होती है।
सैयद प्रॉम

@ यह बहुत अधिक संक्षिप्त की एक बिल्ली है, हालांकि।
djechlin

0

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

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


2
वह लेख कल ही लिखा गया था; क्या आप ब्लॉग से जुड़े हुए हैं? यदि हां, तो कृपया उस संबद्धता का खुलासा करें
मार्टिज़न पीटर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.