स्थिर आंतरिक बिल्डर वर्ग का उपयोग करने का लाभ


9

एक कंपनी के लिए कोड दिशानिर्देशों को लिखने के दौरान मैंने टेलिस्कोपिक कंस्ट्रक्टरों के बजाय प्रभावी जावा से बिल्डर पैटर्न का उपयोग करने की सिफारिश की ।

हालांकि, इसके बारे में थोड़ा और सोचने के बाद, निश्चित रूप से एक अधिक सुरुचिपूर्ण समाधान बिल्डर वर्ग को हटाने और वैकल्पिक तर्कों के साथ अतिरिक्त निर्माणकर्ताओं को हटाने के लिए है।

तो बस एक निर्माणकर्ता के पास आवश्यक पैरामीटर, सामान्य गेटर्स / सेटर, और कोड पर टिप्पणी करें। लागू करते समय yr ऑब्जेक्ट का एक नया उदाहरण बनाएं, फिर मान सेट करें।

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

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


यह भी देखें stackoverflow.com/a/1953567/632951
Pacerier

जवाबों:


8

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

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

जोश आमतौर पर बहुत अच्छी सलाह देता है - मुझे उसकी सबसे अच्छी बात यह लगती है कि यह सलाह खाइयों से आती है - वह खुद स्वीकार करता है कि उसने जावा के कुछ हिस्सों को डिजाइन करने में गलतियाँ की हैं, और प्रभावी जावा आंशिक रूप से उसके 'इलाज' के लिए है। बोले :-)


1
यह इस बारे में कुछ नहीं कहता कि आंतरिक को स्थिर क्यों होना चाहिए ...
जिमी हॉफ

अपरिहार्यता और दुष्प्रभाव मुक्त भी एक लक्ष्य है।
Martijn Verburg

6

जोश बलोच का बिल्डर पैटर्न, गोफ बिल्डर पैटर्न की तरह, जंजीर निर्माणकर्ताओं की लंबी सूची के बिना डिफ़ॉल्ट डेटा के साथ एक अपरिवर्तनीय वस्तु बनाने का एक तरीका प्रदान करता है ।

यदि आपके पास "एक निर्माणकर्ता है जिसमें आवश्यक पैरामीटर, सामान्य गेटर्स / सेटर" हैं, तो आपकी वस्तु अब अपरिवर्तनीय नहीं है। अर्थात। आप इसे इंस्टेंट करने के लंबे समय बाद बदल सकते हैं।

यदि यह आपके लिए कोई समस्या नहीं है तो आपको पहली बार में बिल्डर पैटर्न की आवश्यकता नहीं है। यदि यह एक समस्या है तो आपका समाधान त्रुटिपूर्ण है।


मुझे नहीं लगता कि बिल्डर पैटर्न का उत्परिवर्तन से कोई लेना-देना है, यहां तक ​​कि विकी पर gof का उदाहरण भी परिवर्तनशील है ... en.wikipedia.org/wiki/Builder_pattern#Java भी, इस पैटर्न के लाभ हैं जिन्हें मैंने प्रश्न में उल्लिखित किया है।
निमचम्पस्की

3
@NimChimpsky: क्या म्यूट ऑब्जेक्ट बनाने के लिए बिल्डर पैटर्न को लागू किया जा सकता है या नहीं, यह समस्या नहीं है। सवाल यह है कि क्या आपको चाहिए? गेटर्स और सेटर अनंत काल के लिए आस-पास रहे हैं, जहां वस्तुओं को परस्पर बदला जा सकता है वे एक पूरी तरह से ठोस समाधान हैं, लेकिन लोग अपरिवर्तनीय वस्तुओं को बनाने के साथ एक आम समस्या में भाग गए: निर्माणकर्ताओं की असहनीय श्रृंखलाएं। बिल्डर एक सामान्य समाधान था और इस प्रकार संचार को आसान बनाने के लिए एक पैटर्न बन गया।
पीडीआर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.