2010-05-13 19 views
16

बिल्डर डिजाइन पैटर्न का उपयोग करने के नुकसान क्या होंगे। क्या वहां पर कोई??बिल्डर डिजाइन पैटर्न के नुकसान

संपादित करें - मैं जानना चाहता हूं कि निर्माता डिजाइन पैटर्न का उपयोग करने का कोई बुरा परिणाम है या नहीं? जीओएफ पुस्तक में, उन्होंने डिजाइन पैटर्न के अच्छे और बुरे परिणामों का उल्लेख किया है। लेकिन उन्होंने बिल्डर डिजाइन पैटर्न के लिए किसी भी बुरे नतीजे का उल्लेख नहीं किया है।

+6

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

+1

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

उत्तर

13

यह डीटीओ में अधिक कोड (और अधिक जटिलता पेश कर सकता है) बनाता है अगर आपके पास उदाहरण के लिए कन्स्ट्रक्टर तर्क और/या सेटर्स/गेटर्स हैं।

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

+0

डीटीओ द्वारा आपका क्या मतलब था? – Geek

+1

डेटा ट्रांसफर ऑब्जेक्ट –

+0

पुराना धागा, हालांकि मुझे कोई कारण नहीं दिखता कि क्यों अनिवार्य या वैकल्पिक पैरामीटर होना चाहिए यह तय करने के लिए कि आपको डेटा सेट प्राप्त करने के लिए इस विधि का उपयोग करना चाहिए या नहीं। उन दिनों में जब लोग सादा सी/सी ++ कोड लिख रहे थे, हमारे पास यह सब नहीं था। मुझे लगता है कि हम जानते थे कि हम क्या कर रहे थे। स्वाभाविक रूप से चीजें अग्रिम लेकिन मेरे लिए, बिल्डर पैटर्न आपके वर्गों को अव्यवस्थित करता है, अधिक काम करता है, कोड को पढ़ने में और अधिक कठिन होता है और रखरखाव में वृद्धि करता है। मैंने इसे देखा है, यह एक बिल्डर के साथ शुरू होता है, इसके बाद एक कन्स्ट्रक्टर और सेटर्स होता है। उनमें से सभी 3। और सब क्योंकि किसी ने प्रभावशाली जावा नामक पुस्तक लिखी थी। – Lawrence

9

पैटर्न पैटर्न का दुरुपयोग/दुरुपयोग होने पर केवल पैटर्न ही हानिकारक है। अर्थात। पैटर्न वास्तविक तकनीकी/कार्यात्मक समस्या को हल/अनुरूप नहीं करता था। फिर आपको विशेष समस्या को हल करने के लिए एक और पैटर्न की तलाश करनी चाहिए।

यह विशेष रूप से निर्माता पैटर्न पर लागू नहीं होता है, लेकिन सामान्य रूप से पैटर्न तैयार करने के लिए।


अद्यतन: यदि आप विभिन्न डिजाइन patters (विशेष रूप से लोगों को GOF डिजाइन पैटर्न पुस्तक में उल्लेख किया) और जावा एपीआई में असली दुनिया उदाहरण बारे में जानना चाहेंगे होगी, तो आप इस मिल सकता है उत्तर: Examples of GoF Design Patterns in Java's core libraries उपयोगी। इसमें विस्तार से पैटर्न समझाते हुए विकिपीडिया लेखों के लिंक शामिल हैं।

+0

लिंक के लिए धन्यवाद। मुझे डिजाइन पैटर्न सीखने में दिलचस्पी है। मैं दिए गए लिंक से गुज़र जाऊंगा। – agrawalankur

4

मैं दूसरा जर्ले का post

वरना, जब यह नुकसान की बात आती है:

  • बिल्डर पैटर्न नहीं एक अच्छा मैच है, तो आप के साथ उदाहरण हाइबरनेट या JAXB के लिए डीटीओ मैप करने के लिए है।
  • यदि आप कुछ कारणों से एक म्यूटेबल ऑब्जेक्ट चाहते हैं।
  • दो या तीन फ़ील्ड वाले छोटे डीटीओ के लिए, यह सिर्फ ऊपर की ओर है और आपको कन्स्ट्रक्टर या दो का उपयोग करना चाहिए। जब तक आप जानते हैं कि विश्वास नहीं है कि डीटीओ में भविष्य में अधिक फ़ील्ड होंगे।
+0

-1, सभी 3 अंक गलत हैं। एक बिल्डर पैटर्न में डीबी मैपिंग के साथ बिल्कुल कुछ भी नहीं है, जो म्यूटेबल हो या नहीं, आप का तीसरा बिंदु इंगित करता है कि आप वास्तव में नहीं जानते कि बिल्डर पैटर्न का उद्देश्य क्या है। –

+1

@ एंजेल: मैपिंग फ्रेमवर्क आमतौर पर ऑब्जेक्ट्स को अलग-अलग मान सेट करने के लिए सेट विधियों और कन्स्ट्रक्टर का उपयोग करता है। क्या आपने कभी पहले जेनेरिक मैपिंग फ्रेमवर्क का उपयोग किया है? आपके पिछले दो तर्क कमजोर हैं। – Espen

+0

और बिल्डर पैटर्न के साथ करने के लिए ढांचे के ढांचे में उपयोग किए जाने वाले "सेट मोड" या "कन्स्ट्रक्टर" क्या हैं? सही: _nothing_ मैं दृढ़ता से निर्माता पैटर्न की GOF परिभाषा को पढ़ने का सुझाव देता हूं। –

3

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

2

दूरबीन निर्माताओं की तुलना

  • स्थिर विश्लेषण के नुकसान
  • अनिवार्य मानकों लापता एक अपवाद के लिए
  • फेंक दिया और somethere catched
  • अगर आप बिल्डरों में बॉक्स्ड प्रकार का उपयोग आदिम मूल्यों जो अभी तक सेट नहीं हैं प्रतिनिधित्व करने के लिए किए जाने की जरूरत है, तो स्वत: मुक्केबाजी का एक बहुत है/unboxing चल रहा - जो NullPointerExceptions के लिए अनुमति देता है जो स्पॉट करने के लिए मुश्किल हैं। दूरबीन रचनाकारों में ऐसी कोई समस्या नहीं है - आप केवल आदिम मानों को पारित कर सकते हैं।
  • बहुत अधिक कोड
संबंधित मुद्दे