Rob*_*oli 9 java interface composition game-engine
所以我刚开始用Java编写游戏,我正在编写我的游戏对象.现在我已经在Evolve Your Hierarchy中读到,你应该将游戏构建为组合而不是大类层次结构.由于上一个链接中的图像显示:

但是,当实际开始实现时,我有一个关于在哪里应用接口的小问题.
假设你有一个叫做Player的类,接口是Moveable和Renderable.您是使用公共接口变量实现的:
class Player {
public Moveable moveable;
public Renderable renderable;
}
class GenericMoveable implements Moveable {
// Function implementations
}
class PlayerRenderable implements Renderable {
// Function implementations
}
Run Code Online (Sandbox Code Playgroud)
或者您尝试通过将接口直接应用于对象来执行此操作:
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
}
Run Code Online (Sandbox Code Playgroud)
现在我觉得第二种方法更好.主要原因是因为我可以创建以下列表:
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
Run Code Online (Sandbox Code Playgroud)
我真的只是想确认我是在正确的轨道上.我很确定在通过Java游戏合成创建游戏对象时,您希望将接口直接应用于相关游戏对象,然后在需要时使用私有接口,并为其余部分直接实现这些功能.它是否正确?我正在做的事情的积极和消极是什么?
虽然,虽然我们在这里,但在Java中的Compositional Game Objects的实现中还需要注意什么?我该怎么办?感谢您提前做出的任何回复,感谢您的帮助.
| 归档时间: |
|
| 查看次数: |
2958 次 |
| 最近记录: |