मुझे एक सी ++ कक्षा मिली है जो 3 डी स्पेस - स्थान, रोटेशन, स्केल इत्यादि में ऑब्जेक्ट के अभिविन्यास का वर्णन करती है। मेरे पास अन्य कक्षाएं हैं जिन्हें जरूरी जानकारी (या इसके सबसेट) की आवश्यकता होती है - मॉडल, इलाके, कैमरे, आदि। अब मैं मेरी ओरिएंटेशन क्लास के उन सबक्लास को बना सकता हूं, लेकिन गुगल ने मुझे विरासत पर रचना पसंद करने के लिए कहा है। यह दार्शनिक रूप से समझ में आता है - एक मॉडल एक अभिविन्यास नहीं है, यह में एक है (और हाँ मुझे पता है कि यह एक चीज है जो केवल एक उदारवादी है)। फिर भी यह अनावश्यक रूप से लगता है, उन सभी के लिए समान रैपर विधियों को फिर से लिखने के लिए लगभग हास्यास्पद रूप से सुरुचिपूर्ण होगा-उप-वर्गों को बस उस कार्यक्षमता पर जाना होगा। model.getOrientation().set_x(1)
जैसी चीजें मूर्खतापूर्ण लगती हैं।सी ++ संरचना - क्या मुझे उन सभी कार्यों को लपेटना चाहिए?
मैं देख सकता हूं कि यह छोटी वस्तुओं के लिए "बहुत बुरा" क्यों नहीं होगा, लेकिन इस उदाहरण के लिए (और अन्य इसे पसंद करते हैं), अगर आपको हुप्स के माध्यम से जाना है तो रचना का बिंदु क्या है विरासत का उपयोग कर रहे हैं? क्या मुझे अभी भी इसका उपयोग करना चाहिए? मैं लगभग निश्चित हूं कि मैं इस बारे में गलत तरीके से सोच रहा हूं।
'model.orientation.set_x (1)' के साथ क्या गलत है? – Lol4t0
@ Lol4t0 यह वर्बोज़ लगता है। इसके अलावा, क्या आप किसी ऑब्जेक्ट को इसे नष्ट किए बिना कुछ करने के लिए कहने में सक्षम नहीं होना चाहिए, तो बोलने के लिए? शायद एक समान डिजाइन पैटर्न उदाहरण मदद करेगा? – GraphicsMuncher
बात यह है कि अभिविन्यास स्थापित करना एक बताने वाली वस्तु नहीं है कि क्या करना है (यदि वस्तु अभिविन्यास नहीं है)। उस! वास्तव में एक समस्या है। आपको ऑब्जेक्ट के लिए ओरिएंटेशन सेट नहीं करना चाहिए, इसके बजाय आपको उन शब्दों से बात करनी चाहिए, जैसे 'राक्षस-> हमला()' या 'कैमरा-> ज़ूम() '। – Lol4t0