【发布时间】:2012-05-22 15:36:02
【问题描述】:
我正在编写某种包含机器人、物品等的棋盘游戏。
在某一时刻,我需要获取机器人或可以具有能量的物品的能量值。其编程方式是每个机器人和每个具有能量的物品都有一个 EnergyContainer 类作为字段(以防止代码冗余)和一个能量值类。
现在,基本上,我调用一个接收元素的方法评估()。元素是机器人和物品扩展的抽象类。并非所有元素都有能量容器。如果可能的话,我需要在这个元素上调用 getEnergyContainer,但前提是它当然是一个拥有它的元素。
我可以想到几个解决方案:使用大量 instanceOf 然后进行强制转换。例如,如果元素是 instanceof 机器人,则将元素转换为机器人并在元素上调用 getEnergyContainer。这有一个明显的缺点,我需要对每个具有元素子类的能量执行此操作。
第二个解决方案是定义一个只包含 getEnergyContainer 方法的接口,并使所有具有类的能量都实现它。这个接口的唯一目的是方便一个方法,它几乎是空的。
除非有人有更好的想法,否则“最佳”解决方案是什么?我认为几乎空的接口用作标记接口,但这是唯一的目的,所以我有点反对它。
【问题讨论】:
-
如果您至少发布代码的通用结构将会非常有用。
-
对不起,由于种种原因,我不想这样做。对此造成的不便,我们深表歉意。
标签: java interface instanceof