2010-06-01 2 views
5

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

ऐसी संरचना लिखने के लिए सर्वोत्तम प्रथाएं क्या हैं? या यह पहली जगह में एक खराब डिजाइन है?

  1. अमूर्त कार्यों को घोषित करें, उस बच्चे को लागू करना चाहिए?
  2. सामान्य कार्यों की घोषणा करें, जो बाल वर्ग में अतिरंजित हैं?

उत्तर

1

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

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

+0

अच्छा जवाब, धन्यवाद। –

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