2010-09-23 11 views
11

मैं विभिन्न लेखों से गुजर चुका हूं, लेकिन मुझे अभी भी पता नहीं है कि क्यों उदाहरण का उपयोग नहीं किया जाना चाहिए। कृपया मुझे अपने विचारों को जानें।हमें उदाहरण का उपयोग कब करना चाहिए और

उत्तर

14

मुझे खराब डिज़ाइन पर संकेतों का उदाहरण उपयोग करने की आवश्यकता मिलती है। यह एक निश्चित संकेत है कि एक बड़ा, जटिल स्विच-स्टाइल निर्माण का पालन करेगा। अधिकांश बार जब मैं इसे इस्तेमाल करता हूं, तो हमें उदाहरण के बजाय बहुरूपता का उपयोग करना चाहिए। रणनीति पैटर्न देखें। (relevant examples of use)

एकमात्र बार मुझे लगता है कि मुझे इसका उपयोग करने की आवश्यकता है जब equals(Object o) लागू किया जाता है।

+0

असल में, यह निर्धारित करना है कि किसी ज्ञात मानदंड (उदाहरण के लिए प्रकार) के अनुसार क्या किया जाना चाहिए, लेकिन बहुरूपता का उपयोग करके अलग-अलग कोड शाखाओं पर अज्ञात प्रकारों को प्रेषित करने के लिए, पैटर्न का उपयोग [विज़िटर] (http: // en .wikipedia.org/विकी/विज़िटर_पटरर्न) –

+0

आईएमओ उदाहरण पॉलीमोर्फिज्म से बेहतर है विशेष मामले स्थितियों जहां एक विधि केवल एक उप-वर्ग में समझ में आता है, और अभिभावक वर्ग और/या अन्य उप-वर्गों को स्टब विधियों को लागू करने के लिए मजबूर किया जाएगा जो अर्थहीन हैं उनके संदर्भ में। फिर भी, किसी को विरासत विधि से विशेष-केस विधि को कॉल करने का प्रयास करना चाहिए, लेकिन यदि यह बोझिल है तो उदाहरण का उपयोग करके पूरी तरह से उचित है। –

0

जब आप वस्तु को पारित करते हैं तो आपको इसका उपयोग करने की आवश्यकता नहीं है। यदि कोई अस्पष्टता शामिल है (जैसे एक ही इंटरफेस को लागू करने वाले दो वर्गों की तरह) तो आगे बढ़ने से पहले instanceof का उपयोग करने की सलाह दी जाती है।

4

आधार प्रकार से व्युत्पन्न प्रकार तक कास्टिंग एक बुरी चीज है। यदि आप इस तरह से instandof का उपयोग करते हैं, तो इसे खराब डिजाइन माना जाता है क्योंकि बनाए रखने और पढ़ने के लिए मुश्किल है। http://www.javapractices.com/topic/TopicAction.do?Id=31 देखें।

बराबर के लिए instanceof का उपयोग() क्योंकि आपके पास object है जो आपका प्रकार होना चाहिए, यह अच्छा अभ्यास है।

3

एक अच्छा उपयोग-मामला RandomAccess जैसे मार्कर इंटरफेस की जांच करेगा।

0

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

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

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