तो मैं जावा में एक गेम लिखने की शुरुआत में हूं और मैं अपनी गेम ऑब्जेक्ट्स लिख रहा हूं। अब मैंने Evolve Your Hierarchy में पढ़ा है कि आपको अपने गेम को रचनाओं के रूप में बनाना चाहिए, न कि एक बड़े वर्ग पदानुक्रम के रूप में। जैसा कि पिछले लिंक से इस छवि को दिखाता है:जावा में ठोस शुद्ध एकत्रीकरण (रचना) गेम ऑब्जेक्ट्स कैसे लिखें?
हालांकि, जब वास्तव में कार्यान्वयन के लिए नीचे हो रही मैं कहाँ इंटरफेस को लागू करने के बारे में एक छोटा सा सवाल है।
आइए कहें कि आपके पास प्लेयर और इंटरफेस मूवबल और रेंडरबल नामक एक वर्ग है।
class Player {
public Moveable moveable;
public Renderable renderable;
}
class GenericMoveable implements Moveable {
// Function implementations
}
class PlayerRenderable implements Renderable {
// Function implementations
}
या आप कोशिश करते हैं और इंटरफेस वस्तु को सीधे लागू करके इस करते हैं: आप इस सार्वजनिक इंटरफ़ेस वैरिएबल का उपयोग कर लागू करें
class Player implements Moveable, Renderable {
private GenericMoveable genericMoveable;
// Non-direct Implementation of Moveable
void someMoveFunc(double x, double y) {
genericMoveable.someMoveFunc(x, y);
}
// Direct implementation of Renderable
void someRenderableFunction() {
// Player class specific code
}
}
class GenericMoveable implements Moveable {
// Function implementations
}
अब वर्तमान में मैं महसूस कर रहा हूँ कि दूसरी विधि बेहतर है । इसका मुख्य कारण यह है कि मैं निम्नलिखित सूचियां बना सकता हूं:
List<Renderable> renderObjects; // use this to draw all of the objects to the screen
List<Moveable> moveObjects; // use this to move all objects at once
मैं वास्तव में केवल पुष्टि चाहता हूं कि मैं सही रास्ते पर हूं। मुझे पूरा यकीन है कि जावा में गेम के लिए गेम ऑब्जेक्ट्स बनाते समय आप सीधे गेम ऑब्जेक्ट में इंटरफेस को लागू करना चाहते हैं और फिर निजी इंटरफेस का उपयोग करना चाहते हैं यदि आपको उनकी ज़रूरत है और बाकी के लिए उन कार्यों के प्रत्यक्ष कार्यान्वयन। क्या ये सही है? और मैं क्या कर रहा हूं इसके सकारात्मक और नकारात्मक क्या हैं?
हालांकि, जब हम यहां हैं, तो जावा में रचनात्मक गेम ऑब्जेक्ट्स के कार्यान्वयन में मुझे और क्या देखने की आवश्यकता है? मुझे अलग-अलग क्या करना चाहिए? अग्रिम में किसी भी प्रतिक्रिया के लिए धन्यवाद, मैं किसी भी और सभी मदद की सराहना करता हूं।
दूसरे उदाहरण एक बहुत अच्छे लगता है क्योंकि आप से सूचियों करने में समर्थ हैं मूवबल और रेंडरेबल इंटरफेस। हालांकि, मेरे पास कई वर्ग हैं जो मूवबल को लागू करते हैं और मुझे लगता है कि मैं genericMoveable.someMoveFunc (x, y) को डुप्लिकेट करता हूं। ; उन सभी में - क्या आप इस समस्या में भाग गए थे? – sdasdadas
@ सदादादास असल में मैं इस पर एक नज़र डालने की सिफारिश करता हूं: http://gamadu.com/artemis/ –