在 Java 和类似语言中,我们更有可能为我们的应用程序创建具有有意义名称的类,而不是我们拥有简单的列表、映射和集合(就像您在更动态的语言中所做的那样)。您几乎永远不会看到有人继承 HashMap 或 ArrayList 或 HashSet 并覆盖他们的 add 或 put 方法。
最“Java-esque”的方法是定义一个名为的类Destinations
,它可以包含(作为一个字段)目标对象的哈希映射,由 id 索引。然后,您将只创建对您的应用程序有意义的方法,例如
add(door, destination)
它可以封装你的游戏逻辑。没有人需要知道幕后有一张地图(或列表或集合)。公开地图意味着您的应用程序有一个泄漏的抽象,您将希望避免这种情况。
也许更好:也有可能最适合你的就是只有
class Door
和
class Destination
并使所有目的地的地图成为Destination的一个字段。如果不知道更多你想要做什么,很难说。尽量减少类的数量似乎是个好主意。你能把你的地图封装到目的地,并制作静态方法来访问所有的门吗?
现在,如果您决定创建一个单独的 Destinations 类,您可以像这样封装您的地图:
class Destinations {
private static Map<Integer, Destination> map = ...
public static void add(Door door, Destination destination) ...
}
使通话看起来像:
Destinations.add(door, destination);
或者,您的目的地地图可以是单例的。在单例与实用程序类问题上获得意见总是很有趣。看看什么最适合您的应用。
TL;DR:将地图隐藏在另一个类中,这样客户就不会知道其中有一个java.util.HashMap
使用:
Destinations
具有静态方法的实用程序类
- 单例类
DestinationInfo
- 地图隐藏为模型对象
Destination
本身内部的静态字段(使用静态方法)。