2009-08-05 31 views
5

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

संपादित

बचें अशक्त के लिए जाँच: http://www.invisible-city.com/sharon/2009/03/null-object-pattern-when-slacker-is.html या http://journalofasoftwaredev.wordpress.com/2008/08/19/null-object-pattern-by-example/

+1

क्या आप एक संक्षिप्त स्पष्टीकरण या 'शून्य ऑब्जेक्ट पैटर्न' से लिंक जोड़ सकते हैं? – thecoop

+0

http://jeremyjarrell.com/archive/2007/08/01/46.aspx –

उत्तर

2

मेरे अनुभव से मुझे नहीं लगता कि एक नल-ऑब्जेक्ट को सिंक में रखना मुश्किल है। यदि आपको यह समस्या है, तो आपके ऑब्जेक्ट में बहुत अधिक जिम्मेदारियां हो सकती हैं क्योंकि यह बहुत सारे बदलावों के अधीन है।

यदि मैं वास्तव में एक डिफ़ॉल्ट व्यवहार प्रवाह को अच्छी तरह से देने के संदर्भ में ऐसी वस्तु को परिभाषित कर सकता हूं तो मैं इस पैटर्न का उपयोग करता हूं। जैसे एक क्वेरी मैनिपुलेशन के लिए एक नल ऑब्जेक्ट वह है जो मूल क्वेरी को छूता है। किसी अन्य वस्तु के लिए एक शून्य विस्तार वह है जो कुछ भी नहीं करता है।

मुझे कभी-कभी एक वैकल्पिक साफ व्यवहार के लिए ifs के साथ जांचने से बचने के लिए एक सुंदर साफ पैटर्न मिलता है जो मेरे ऐप की एक निश्चित स्थिति में मौजूद हो सकता है या नहीं भी हो सकता है।

4

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

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

0

मुझे यकीन है कि मेरी IEnumerable आइटम null के बजाय खाली enumerations कर रहे हैं, लेकिन अगर वास्तव में कुछ याद आ रही है, क्या null साथ गलत क्या है? कभी-कभी मुझे के बीच अंतर करने की आवश्यकता नहीं है और आलसी प्रारंभिक स्थिति में गुम है, लेकिन फिर मैं आम तौर पर राज्य को इंगित करने के लिए एक अलग बूलियन चर का उपयोग करता हूं ताकि 0 (समेत) लक्ष्य ऑब्जेक्ट के लिए मान्य हो।

2

मुझे अपने कारखानों और आईओसी कार्यान्वयन के साथ शून्य वस्तुओं का उपयोग करके बड़ी सफलता मिली है। वे विशेष रूप से एक आवेदन की ऊर्ध्वाधर विशेषताओं के लिए उपयोगी हैं। मैं आपके आवेदन के लिए महत्वपूर्ण कार्रवाई के लिए एक नहीं बनाऊंगा।

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

0

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

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

http://www.codeproject.com/Articles/1042674/NULL-Object-Design-Pattern

कुछ नोट शून्य डिजाइन पैटर्न जो इस पैटर्न के बारे में भ्रम की स्थिति को दूर करेंगे के बारे में पढ़ें।

  1. शून्य डिजाइन पैटर्न एक डिफ़ॉल्ट व्यवहार के साथ एक वस्तु का अभाव भरता है और केवल जब एक वस्तु दूसरे के साथ सहयोग किया जाना चाहिए।
  2. पूर्ण डिजाइन पैटर्न नल अपवाद हैंडलिंग को प्रतिस्थापित करने के लिए नहीं है। यह नल डिजाइन पैटर्न के साइड लाभों में से एक है लेकिन इरादा एक डिफ़ॉल्ट व्यवहार प्रदान करना है।
  3. NULL चेक को नल डिज़ाइन पैटर्न ऑब्जेक्ट्स के साथ प्रतिस्थापित नहीं किया जाना चाहिए क्योंकि इससे एप्लिकेशन में चुप दोष हो सकते हैं।
    1. नॉक डिजाइन पैटर्न मॉक यूनिट परीक्षण और एग्इल विकास में उपयोगी है।
    2. न्यूल क्लास सिंगलटन डिज़ाइन पैटर्न को लागू करने और कक्षाओं को अपरिवर्तनीय बनाने के लिए क्लासिक केस हैं।

यह पैटर्न ज्यादातर डेकोरेटर और कारखाने पैटर्न के साथ संयोजन में देखा जाता है।

संबंधित मुद्दे