我用Java设计游戏,有2个玩家,不同类型的敌人和魔药。这是我的类层次结构:
正如你所看到我有Touchable
接口,我知道接口是与描述类的某个行为的类的契约,所以我在Touchable接口中声明了void collision(Player p)
方法因为不是每个GameObject
是可触摸的(由玩家提供),但后来我意识到了一些事情,我可以通过这种方式将void collision(Player p)
方法放在GameObject类中:
public void collision(Player p) {}
然后摆脱Touchable接口,并在所有GameObjects的每个循环中删除这个if语句:
if (gameObject instanceOf Touchable) { ... }
并且只需调用gameObject.collision(p)
,如果它没有被子类实现,则不会发生任何事情。你认为这是一种更好的方式吗?
答案 0 :(得分:0)
我认为为了代码可读性,它仍然应该是界面的一部分。这种方式更加明显,您也可以将稍后发现的任何其他方法放在同一界面的整个程序中保持不变。