कोको विरासत के बजाय प्रतिनिधियों का उपयोग क्यों करता है?कोको विरासत के बजाय प्रतिनिधियों का उपयोग क्यों करता है?
उत्तर
प्रतिनिधियों के साथ, आप एक वस्तु को कई अन्य वस्तुओं का प्रतिनिधि बन सकते हैं। उदाहरण के लिए, आप अपने MyController उदाहरण को एनएसटीबल व्यू, एनएसटीक्स्टफाल्ड, एनएसविंडो, और आपके इंटरफ़ेस को लिखने वाली किसी अन्य ऑब्जेक्ट का प्रतिनिधि बन सकते हैं। यह आपके यूआई के एक सेक्शन से संबंधित अपने सभी यूजर इंटरफेस कोड को रखने के लिए एक कॉम्पैक्ट जगह देता है।
यदि आप इसे सबक्लासिंग के साथ करते हैं, तो आपको प्रत्येक ऑब्जेक्ट को एक सबक्लास बनाना होगा जिसे आप कॉलबैक चाहते थे।
इसके अलावा, इस एक क्लासिक inheritance vs composition सवाल
सामान्य रूप से एक सबक्लास बनाने में समय लेने वाली प्रक्रिया हो सकती है, जिसमें बहुत अधिक आधारभूत कार्य की आवश्यकता होती है, और विभिन्न टेम्पलेट विधियों को ओवरराइड किया जा सकता है।
इस बीच, एक प्रतिनिधि का उपयोग करके आप एक साधारण वस्तु बनाने की अनुमति देते हैं जो कुछ विशिष्ट प्रश्नों का उत्तर देता है या विभिन्न तरीकों से प्रतिक्रिया करता है।
अब जब आप इसे गतिशीलता के साथ जोड़ते हैं जिसे आप फ्लाई पर प्रतिनिधियों को स्वैप करके प्राप्त कर सकते हैं तो यह एक बहुत लचीली मजबूत प्रणाली बना सकता है जो अधिक कोड पुन: उपयोग को बढ़ावा देता है।
इन चीजों के बारे में कुछ सामान्य चर्चाएं here और here हैं। आप कुछ पुराने SO प्रश्न here और here भी पा सकते हैं।
पोस्ट करना चाहिए एक टेम्पलेट उप-वर्ग से बनाने के लिए कम प्रयास कैसे करता है? दूसरी तरफ, फ्लाई पर स्वैप करने की क्षमता कुछ परिस्थितियों में उपयोगी हो सकती है, लेकिन मुझे नहीं लगता कि कोको के लिए यह क्यों जरूरी है। – Casebash
मुझे यह भी इतना यकीन नहीं है कि यह कम काम है, लेकिन विरासत के कम स्तर आमतौर पर सरल डिजाइन की ओर जाता है। सरलता एक अच्छी बात है (टीएम)। –
आवश्यकता के अनुसार। कुछ भी बिल्कुल जरूरी नहीं है, यह ढांचा डिजाइनरों की राय थी जिसने भाषा के बाधाओं को प्रतिनिधिमंडल के माध्यम से रचना दी थी, जो वे कर सकते थे सबसे अच्छा डिजाइन विकल्प था। लगभग एक साल तक इसमें काम करने के बाद मैं इस बात से सहमत हूं कि पसंद एक अच्छा था। लेकिन जब मैं पहली बार कोको में अन्य भाषाओं से आया तो यह मेरे लिए थोड़ा अजीब था। –
यहां विस्तार से चर्चा की है: http://www.cocoadev.com/index.pl?ExtendsIsEvil
और जावा लोग यह भी जानते हैं: http://www.javaworld.com/javaworld/jw-08-2003/jw-0801-toolbox.html
में एकाधिक ऑब्जेक्ट्स के लिए एक नियंत्रक लिखने के बारे में अच्छी बात है, अगर आप विस्तृत करने के लिए नहीं जा रहे हैं तो एक टिप्पणी भी दे सकते हैं। क्या होता है यदि ये लिंक मर जाते हैं, पहले की तरह? – pqsk
प्रतिनिधि वर्गों के बीच युग्मन को कम करते हुए ऑब्जेक्ट व्यवहार के अनुकूलन को सरल बनाते हैं। विरासत संकलन समय पर परिभाषित किया गया है, प्रतिनिधिमंडल इस तरह प्रतिबंधित नहीं है और रनटाइम पर किया जा सकता है। – bbaassssiiee
- 1. आईफोन एसडीके कुछ प्रतिनिधियों के लिए प्रोटोकॉल की बजाय श्रेणियों का उपयोग क्यों करता है?
- 2. ओपनजीएल रेडियंस के बजाय डिग्री का उपयोग क्यों करता है?
- 3. क्यों memo.Lines TStringList के बजाय TStrings का उपयोग करता है?
- 4. आरटीपी टीसीपी के बजाय यूडीपी का उपयोग क्यों करता है?
- 5. रुबी प्रतिक्रिया_to का उपयोग क्यों करता है? responds_to के बजाय?
- 6. डेटामैपर मिश्रित बनाम विरासत का उपयोग क्यों करता है?
- 7. Forth का उपयोग IF कथन का उपयोग क्यों करता है ... ENDIF के बजाय?
- 8. विरासत के बजाय प्रतिनिधिमंडल का उपयोग कब करें?
- 9. हमें सी # प्रतिनिधियों की आवश्यकता क्यों है
- 10. reinterpret_cast के बजाय static_cast का उपयोग करना क्यों महत्वपूर्ण है?
- 11. कोको प्रोग्रामिंग में त्रुटि के बजाय गुजरने और त्रुटि क्यों?
- 12. आईज़िप के बजाय ज़िप का उपयोग करना बेहतर क्यों है?
- 13. कार्यों के बजाय कन्स्ट्रक्टर का उपयोग क्यों किया जाता है?
- 14. यूनिक्स समय के लिए डेटटाइम एक पूर्णांक के बजाय डबल का उपयोग क्यों करता है?
- 15. PHP 5 क्लासनाम() के बजाय कन्स्ट्रक्टर के रूप में __contruct() का उपयोग क्यों करता है?
- 16. एकाधिक विरासत के बजाय उपयोग करने के लिए डिज़ाइन पैटर्न
- 17. मैं प्रतिनिधियों का उपयोग कहां उपयोग करूं?
- 18. क्यों ArrayList आकार() के बजाय आकार() प्राप्त नहीं करता है?
- 19. मेरा एप्लिकेशन हमेशा संदर्भित संस्करण के बजाय नवीनतम जीएसी संस्करण का उपयोग क्यों करता है?
- 20. सॉर्टेडलिस्ट कार्यान्वयन सीधे फेंकने के बजाय थ्रोहेल्पर का उपयोग क्यों करता है?
- 21. एसएसई के बजाय एवीएक्स इंट्रिनिक्स का उपयोग गति में सुधार नहीं करता है - क्यों?
- 22. जावा ऐरेलिस्ट प्रति-सरणी कास्टिंग के बजाय प्रति-तत्व कास्टिंग का उपयोग क्यों करता है?
- 23. अंडरस्कोरजेएस टाइप करने के बजाय toString.call() का उपयोग क्यों करता है?
- 24. XCS 4.2 क्यों NaututoreleasePool के बजाय main.m में @autoreleasepool का उपयोग करता है?
- 25. + ऑपरेटर प्रतिनिधियों के संयोजन के लिए कैसे काम करता है?
- 26. कोको हर जगह एक ही enum घोषणा शैली का उपयोग क्यों नहीं करता है?
- 27. Heroku Postgresql का उपयोग क्यों करता है?
- 28. एनएफएस डिफ़ॉल्ट रूप से यूडीपी का उपयोग क्यों करता है?
- 29. HTTP टीसीपी का उपयोग क्यों करता है?
- 30. stdout के बजाय wget आउटपुट stderr क्यों करता है?
मैं obj-/कोको के बारे में पर्याप्त जानकारी नहीं है ऋण में इस प्रश्न का उत्तर देने के लिए (निश्चित रूप से महान उत्तर का पालन करेंगे) लेकिन आईआईआरसी मुख्य तर्क यह है कि प्रतिनिधियों का उपयोग करके 'एकाधिक' विरासत (ओबीजे-सी में असंभव) का उपयोग करके 'लूसर' युग्मन के लिए अनुमति मिलती है। – ChristopheD
आईआईआरसी क्या है? मैंने इसके बारे में नहीं सुना है। – Casebash
iirc = अगर मुझे सही ढंग से – ChristopheD