【发布时间】:2015-09-02 19:56:58
【问题描述】:
场景。我正在编写与游戏相关的代码。在那个游戏中,Player(它也是一个类)有一个Item 的列表。还有其他类型的项目继承自Item,例如ContainerItem、DurableItem 或WeaponItem。
显然,只有List<Item> 对我来说非常方便。但是当我得到玩家的物品时,我区分物品类型的唯一方法是使用instanceof关键字。我确定我已经读过依赖它是不好的做法。
在这种情况下可以使用它吗?还是我应该重新考虑我的所有结构?
【问题讨论】:
-
如果Item定义了一个抽象方法,就可以避免使用instanceof,强制每个子类实现自己的。
-
可能会重新考虑您的结构。您描述的模式实际上是一种反模式。
-
是的,通常使用 `instanceof` 是糟糕/糟糕设计的表现。诀窍是使用双重调度或访问者模式。上网看看。
-
如果您提供一些有关您如何使用
instanceof的详细信息,给您一些示例会更容易。
标签: java hierarchy instanceof