यह डिज़ाइन वास्तव में स्मॉलटाक पर वापस आ गया है, जिसे मैं लगभग किसी भी और सभी चिंताओं की कीमत पर ऑब्जेक्ट ओरिएंटेशन को आगे बढ़ाने के प्रयास के रूप में देखूंगा। जैसे, यह वस्तु उन्मुखीकरण का उपयोग करने के लिए (मेरी राय में) झुकता है, तब भी जब अन्य तकनीकें शायद (या निश्चित रूप से) श्रेष्ठ हैं।
Objectरूट पर एक एकल पदानुक्रम (या कुछ समान) होने से आपके संग्रह वर्गों के संग्रह के रूप में बनाने के लिए (एक उदाहरण के लिए) काफी आसान हो जाता है Object, इसलिए किसी भी प्रकार की वस्तु को संग्रह करने के लिए यह तुच्छ है।
इसके बजाय मामूली लाभ के बदले में, आपको नुकसान की पूरी मेजबानी मिलती है। सबसे पहले, एक डिजाइन के दृष्टिकोण से, आप कुछ सही मायने में पागल विचारों के साथ समाप्त होते हैं। कम से कम ब्रह्मांड के जावा दृश्य के अनुसार, नास्तिकता और वन में क्या आम है? कि उन दोनों के पास हैशकोड हैं! क्या मानचित्र एक संग्रह है? जावा के अनुसार, नहीं, यह नहीं है!
70 के दशक में जब स्मॉलटाक को डिजाइन किया जा रहा था, इस तरह की बकवास को स्वीकार किया गया था, मुख्यतः क्योंकि किसी ने भी एक उचित विकल्प नहीं बनाया था। स्मॉलटाक को 1980 में अंतिम रूप दिया गया था, और 1983 तक Ada (जिसमें जेनरिक भी शामिल है) डिजाइन किया गया था। यद्यपि अडा ने कभी भी उस तरह की लोकप्रियता हासिल नहीं की, जिसकी भविष्यवाणी की गई थी, इसके जेनेरिक, मनमाने ढंग से पदानुक्रमों में निहित पागलपन के बिना - मनमाने प्रकार की वस्तुओं के संग्रह का समर्थन करने के लिए पर्याप्त थे ।
जब जावा (और कुछ हद तक, .NET) डिजाइन किए गए थे, तो अखंड वर्ग पदानुक्रम शायद "सुरक्षित" विकल्प के रूप में देखा गया था - समस्याओं के साथ, लेकिन ज्यादातर ज्ञात समस्याएं। जेनेरिक प्रोग्रामिंग, इसके विपरीत, लगभग हर कोई (तब भी) महसूस किया गया था कि कम से कम सैद्धांतिक रूप से समस्या के लिए बहुत बेहतर दृष्टिकोण था, लेकिन एक यह कि कई व्यावसायिक रूप से उन्मुख डेवलपर्स को बल्कि खराब खोज और / या जोखिम भरा माना जाता था (यानी, वाणिज्यिक दुनिया में) , एडा को काफी हद तक एक विफलता के रूप में खारिज कर दिया गया था)।
मुझे स्पष्ट होने दो हालांकि: अखंड पदानुक्रम एक गलती थी। उस गलती के कारणों को कम से कम समझा जा सकता था, लेकिन यह वैसे भी एक गलती थी। यह एक बुरा डिज़ाइन है, और इसकी डिज़ाइन समस्याओं का उपयोग करते हुए लगभग सभी कोड व्याप्त हैं।
आज एक नए डिजाइन के लिए, हालांकि, कोई उचित सवाल नहीं है: एक अखंड पदानुक्रम का उपयोग करना एक स्पष्ट गलती और एक बुरा विचार है।
objectभाग में .NET फ्रेमवर्क में एक जड़ है क्योंकि यह सभी वस्तुओं में कुछ बुनियादी क्षमताओं को प्रदान करता है, जैसे किToString()औरGetHashCode()