gpt4 book ai didi

Java - 我的代码显然违背了常见的 OOD 范例,但不确定如何改进它

转载 作者:搜寻专家 更新时间:2023-10-30 21:08:21 27 4
gpt4 key购买 nike

<分区>

编辑:我非常感谢大家的意见。我从所有回复中有所收获,并学到了很多关于 OOD 的知识。

我正在制作一个简单的虚拟桌面 war 游戏。为了表示战场上的单位,我有以下简单的类层次结构:一个抽象类 Unit 和两个派生类,Troop 和 Vehicle。

我有另一个类,它有一个包含游戏中所有单位的哈希表。哈希表值是 Unit 类型,所以我可以在 O(1) 时间内引用它们。

在大多数情况下,这很好,但有时调用者需要知道某物是部队还是车辆才能从这些派生类中调用特定方法。为了适应这一点,我创建了两个 get 方法来强制执行类型:

  public Troop getTroop(String uniqueID) {
Unit potentialTroop = get(uniqueID);
if(potentialTroop instanceof Vehicle) {
throw new InternalError();
}
return (Troop) potentialTroop;
}

public Vehicle getVehicle(String uniqueID) {
Unit potentialVehicle = get(uniqueID);
if(potentialVehicle instanceof Troop) {
throw new InternalError();
}
return (Vehicle) potentialVehicle;
}

(注意它所属的类只是扩展了 Hashtable,所以这里使用的 get 方法是 Java 的 hashtable 的 get 方法。)

所以我认为这是糟糕的 OOD 设计,因为如果我进一步扩展单元,我将不得不向这个哈希表添加更多检查和更多#get 方法。

我这样说对吗?如果是这种情况,有人有替代的 OOD 建议吗?

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com