अगर मैं सॉफ़्टवेयर डिज़ाइन पैटर्न का उपयोग नहीं करूंगा, तो मुझे किस तरह की समस्याओं का सामना करना पड़ सकता है? क्या आप मुझे मानक ऑब्जेक्ट-ओरिएंटेड तकनीकों का उपयोग करके डिजाइन के करीब आने की समस्याओं के बारे में बता सकते हैं?
अगर मैं सॉफ़्टवेयर डिज़ाइन पैटर्न का उपयोग नहीं करूंगा, तो मुझे किस तरह की समस्याओं का सामना करना पड़ सकता है? क्या आप मुझे मानक ऑब्जेक्ट-ओरिएंटेड तकनीकों का उपयोग करके डिजाइन के करीब आने की समस्याओं के बारे में बता सकते हैं?
जवाबों:
आप बात याद कर रहे हैं।
सॉफ़्टवेयर डिज़ाइन करते समय डिज़ाइन पैटर्न स्वाभाविक रूप से मौजूद होते हैं, जैसे दुनिया में संरचनात्मक पैटर्न मौजूद हैं। यहां तक कि अगर आप चीजों का नाम नहीं जानते हैं, तो आप अंततः पाएंगे कि कुछ निश्चित समस्याओं के लिए कुछ भौतिक संरचनाएं अच्छी तरह से अनुकूल हैं। आप पाएंगे कि लकड़ी / धातु सलाखों / आदि का एक त्रिकोण आकार एक बहुत ही स्थिर संरचना है, लेकिन केवल एक विमान पर। आपको लगता है कि चौकोर ईंटें गोल वाले लोगों के लिए कुछ फायदे हैं ...
इसी तरह, कुछ सॉफ्टवेयर संरचनाएं किसी तरह से विशिष्ट या इष्टतम हैं। आप अंततः उन्हें खोज लेंगे और यदि आप उनके लिए नाम जानते हैं तो उनकी परवाह किए बिना उनका उपयोग करेंगे। यही कारण है कि डिज़ाइन पैटर्न क्या हैं - वे इन संरचनाओं के लिए नाम हैं जो अनुभवी प्रोग्रामर जानते हैं और वैसे भी उपयोग करते हैं। यह प्रोग्रामर को अधिक समान और संक्षिप्त रूप से संवाद करने की क्षमता देता है। यह प्रोग्रामर को पैटर्न की अवधारणा में और अधिक सचेत रूप से सोचने देता है।
तो मैं बनाने की कोशिश कर रहा हूँ दो प्रमुख बिंदु:
जो लोग अतीत को याद नहीं रख सकते हैं, वे इसे दोहराने की निंदा करते हैं।
आप अपने डिजाइन द्वारा उठाए गए लोगों के अलावा किसी भी विशिष्ट समस्याओं का सामना नहीं करेंगे। और समय के साथ-साथ आपको पता चले बिना पैटर्न का उपयोग करना समाप्त हो जाएगा, आपने अभी समय बिताया है ताकि आप उन्हें समझ सकें। पहले से पैटर्न जानने के बाद उन्हें डिजाइन में जगह पाना आसान हो गया और प्रमुख लाभ यह है कि वे कई व्यक्तियों द्वारा सिद्ध किए जाते हैं।
आज जो कुछ भी विकसित किया जा रहा है वह काफी हद तक पिछले ज्ञान पर आधारित है, इसे अनदेखा करने का कोई मतलब नहीं होगा। आज से लगभग सैकड़ों साल पहले गिरिजाघरों का निर्माण करने वाले लोगों की समस्याओं को जाने बिना एक गगनचुंबी इमारत के निर्माण की कल्पना करें।
अगर मैं सॉफ़्टवेयर डिज़ाइन पैटर्न का उपयोग नहीं करूंगा, तो मुझे किस तरह की समस्याओं का सामना करना पड़ सकता है?
आपको कोई भी सॉफ्टवेयर न लिखने की समस्या होगी।
चर एक डिजाइन पैटर्न हैं।
तरीके एक डिजाइन पैटर्न हैं।
ऑपरेटरों - इसके अलावा, घटाव, आदि - एक डिजाइन पैटर्न हैं।
विवरण एक डिजाइन पैटर्न हैं।
मान एक डिज़ाइन पैटर्न हैं।
संदर्भ एक डिजाइन पैटर्न हैं।
भाव एक डिजाइन पैटर्न है।
कक्षाएं एक डिजाइन पैटर्न हैं।
...
हर समय आप प्रोग्रामिंग में जो कुछ भी करते हैं वह एक डिजाइन पैटर्न होता है । अधिकांश समय पैटर्न आपकी सोच में इतना उलझ जाता है कि आपने इसे "डिजाइन पैटर्न" के रूप में सोचना बंद कर दिया है। जिन चीजों को आपको सीखना पड़ता है, जैसे "सिंगलटन पैटर्न" और इसी तरह केवल ऐसे पैटर्न हैं जो अभी तक जो भी भाषा का उपयोग कर रहे हैं, उसमें बेक नहीं किया गया है।
क्या आप मुझे मानक ऑब्जेक्ट-ओरिएंटेड तकनीकों का उपयोग करके डिजाइन के करीब आने की समस्याओं के बारे में बता सकते हैं?
नहीं, मुझे नहीं पता कि इस सवाल का क्या मतलब है। डिजाइन पैटर्न हैं "मानक वस्तु उन्मुख तकनीक" - यह है कि क्या उन्हें बनाता पैटर्न डिजाइन । एक डिज़ाइन पैटर्न एक वस्तु-उन्मुख भाषा में विशेष रूप से (हालांकि जरूरी नहीं ) को हल करने के लिए एक मानक तकनीक है ।
The things that you have to learn like "the singleton pattern" and so on are simply patterns that haven't (yet) been baked into whatever language you're using.
- यह (लगभग) एक डिजाइन पैटर्न की परिभाषा है - एक लचीला / आसानी से पुन: प्रयोज्य कोड निर्माण का उपयोग भाषा में एक सीमा को पार करने के लिए किया जाता है, जो दूसरों के लिए संवाद करना आसान है। एक बार यह भाषा का हिस्सा होने के बाद, यह अब एक डिज़ाइन पैटर्न नहीं है।
एक डिजाइन पैटर्न के बिंदु को समझना पत्र का उपयोग करने से अधिक महत्वपूर्ण है। कुछ पैटर्न हैं, IMO, मूर्खतापूर्ण, कम से कम उस भाषा के प्रतिमानों में जिसका मैं आदी हूँ। IMO, एक प्रोग्रामर जो केवल नेत्रहीन रूप से डिजाइन पैटर्न का उपयोग करता है और वास्तव में उन्हें समझने के बिना एक बुरा प्रोग्रामर है जो खुद चीजों के माध्यम से सोचना चाहता है। लेकिन कोई व्यक्ति जो खुद को विचारों से परिचित करता है और फिर खुद के लिए निर्णय लेता है कि क्या वे सार्थक हैं या तो एक मजबूत प्रोग्रामर होने की संभावना है।
उस ने कहा, मेरे पास कोई @ @ $ आईएनजी नहीं है कि फ्लाईवेट का क्या मतलब है और मैं इसे स्वीकार करने में शर्मिंदा नहीं हूं। (एक और विकिपीडिया प्रविष्टि के लिए टिप्पणियां देखें जिससे बहुत मदद मिली)
मैं डिजाइन पैटर्न पर विकिपीडिया के प्रवेश की सलाह देता हूं। यह बहुत संक्षिप्त और स्पष्ट रूप से लिखा गया है। किसी दिए गए डिज़ाइन पैटर्न से परेशान क्यों हो सकता है या नहीं, इसका अंदाजा लगाने में बहुत मददगार। मैं व्यक्तिगत रूप से सरलतम लोगों को सबसे अधिक उपयोगी पाता हूं और अपनी आवश्यकताओं के अनुरूप किसी भी पैटर्न के दिए गए कार्यान्वयन को संशोधित करने के बारे में दो बार नहीं सोचूंगा।
वे विचार हैं, ब्लूप्रिंट नहीं। कुछ भाषाओं में वे बहुत अच्छे विचार नहीं हैं। दूसरों में, उन्हें सही तरीके से एक भाषा की डिज़ाइन की कमजोरियों पर काबू पाने के लिए कीचड़ के रूप में देखा जाता है जो कम जटिलता के माध्यम से बेहतर मुआवजा दे सकते हैं। भले ही, यह उनकी जांच करने और उन चुनौतियों को समझने की कोशिश न करे जो आपके अपने पसंदीदा समाधानों को तय करने से पहले दूर करने के लिए हैं।
आपको किस प्रकार की समस्याओं का सामना करना पड़ेगा? आप अवसरों को याद कर सकते हैं और अपनी जरूरत से ज्यादा समय बिता सकते हैं जब तक कि आप एक प्रोग्रामिंग जीनियस नहीं हैं जो पहले से ही यह सब पता लगा चुके हैं। लोकप्रिय प्रोग्रामिंग विचारों की एक महत्वपूर्ण नज़र बनाए रखना महत्वपूर्ण है, लेकिन यह समझने में कभी भी दर्द नहीं होता है कि यह लोगों को लगता है कि वे हल कर रहे हैं क्योंकि यह आपके स्वयं के पसंदीदा समाधानों / दृष्टिकोणों को अधिक स्पष्टता प्रदान करेगा।
आपके द्वारा सामना की जाने वाली मुख्य समस्या यह है कि आप पहिया को फिर से मजबूत करेंगे । उन्हें पैटर्न कहा जाता है क्योंकि वे अक्सर और पूर्वानुमानित तरीके से दिखाई देते हैं।
यहां तक कि अगर आप डिजाइन पैटर्न का पालन करते हैं तो आप खराब डिजाइन के साथ समाप्त हो सकते हैं। डिजाइन पैटर्न प्राकृतिक हैं और आप इसे अपने डिजाइन में कुछ स्वाद का उपयोग करके समाप्त करेंगे। आपको किसी भी पैटर्न का उपयोग न करने के लिए वास्तव में कठिन प्रयास करना होगा। डिजाइन पैटर्न की निंदा करने का कोई कारण नहीं है, आपकी आवश्यकताओं के लिए सही पैटर्न चुनने के लिए और अधिक महत्वपूर्ण है
आप इसे साकार किए बिना हर समय डिजाइन पैटर्न का उपयोग कर रहे हैं। लोकप्रिय भाषाओं में बहुत सारे मानक पुस्तकालयों को डिज़ाइन पैटर्न को ध्यान में रखते हुए बनाया गया है। एक उदाहरण जावा की FileReader
लाइब्रेरी है जिसे डेकोरेटर डिज़ाइन पैटर्न का उपयोग करके बनाया गया है । अब अपने स्वयं के कोड के बारे में बात करते हुए , आपको डिज़ाइन पैटर्न (ज्यादातर मामलों में) का उपयोग करने के लिए मजबूर नहीं किया जाता है। एक डिज़ाइन पैटर्न एक "आमतौर पर होने वाली समस्या का पुन: प्रयोज्य समाधान" है , जिसका अर्थ है कि यह आपको क्लीनर को अधिक बनाए रखने योग्य कोड लिखने में मदद करेगा, इसलिए यह वास्तव में आपके ऊपर है कि आप स्पेगेटी कोड के साथ समाप्त होने से कितना बचना चाहते हैं।