在java中实现这一点的最佳方法
所以我有这样的要求:在java中实现这一点的最佳方法,java,implementation,Java,Implementation,所以我有这样的要求: 一个名为Destination的类 名为Destinations的HashMap 目标类具有Door类型的对象数组。所以基本上我从文件中读取一个“门”,每个门都有一个属性“destination”,它告诉我它属于哪个目的地 我的问题是,什么更好?: a) 对象中保存目的地的一种方法,用于检查HashMap目的地中是否存在新门的目的地,从而将该门插入其现有目的地,或创建新目的地,然后插入该门 b) 重写(?)Destinations HashMap的add方法,并在那里实
- 一个名为Destination的类
- 名为Destinations的HashMap
谢谢。在Java和类似语言中,我们更可能为应用程序创建具有有意义的名称的类,而不是简单的列表、映射和集合(就像在更动态的语言中所做的那样)。您几乎永远不会看到有人将HashMap、ArrayList或HashSet子类化,并重写其add或put方法 最“Java风格”的方法是定义一个名为
Destinations
的类,该类可以包含(作为字段)目标对象的哈希映射,并按id进行索引。然后,您将只创建那些对应用程序有意义的方法,如
add(door, destination)
它可以封装您的游戏逻辑。没有人需要知道幕后有一张地图(或列表或集合)。公开映射意味着您的应用程序有一个泄漏的抽象,这是您想要避免的
也许更好:也有可能对你最有效的方法是只拥有
class Door
及
并使所有目的地的地图成为目的地字段。如果你不知道你想做什么,那就很难说了。最小化类的数量似乎是个好主意。你们能把你们的地图封装到目的地,并用静态方法访问所有的门吗
现在,如果您决定创建一个单独的Destinations类,您可以像这样封装地图:
class Destinations {
private static Map<Integer, Destination> map = ...
public static void add(Door door, Destination destination) ...
}
或者,您的目的地地图可以是单件地图。在单身与实用类的问题上获得意见总是很有趣的。看看什么最适合您的应用程序
TL;DR:将映射隐藏在另一个类中,以便客户端不知道存在java.util.HashMap
,方法如下:
- 带有静态方法的实用程序类<代码>目的地代码>
- 单例类
DestinationInfo
- 地图作为静态字段隐藏在模型对象
自身内部(使用静态方法)Destination
Destinations
的类,该类可以包含(作为字段)目标对象的哈希映射,并按id进行索引。然后,您将只创建那些对应用程序有意义的方法,如
add(door, destination)
它可以封装您的游戏逻辑。没有人需要知道幕后有一张地图(或列表或集合)。公开映射意味着您的应用程序有一个泄漏的抽象,这是您想要避免的
也许更好:也有可能对你最有效的方法是只拥有
class Door
及
并使所有目的地的地图成为目的地字段。如果你不知道你想做什么,那就很难说了。最小化类的数量似乎是个好主意。你们能把你们的地图封装到目的地,并用静态方法访问所有的门吗
现在,如果您决定创建一个单独的Destinations类,您可以像这样封装地图:
class Destinations {
private static Map<Integer, Destination> map = ...
public static void add(Door door, Destination destination) ...
}
或者,您的目的地地图可以是单件地图。在单身与实用类的问题上获得意见总是很有趣的。看看什么最适合您的应用程序
TL;DR:将映射隐藏在另一个类中,以便客户端不知道存在java.util.HashMap
,方法如下:
- 带有静态方法的实用程序类<代码>目的地代码>
- 单例类
DestinationInfo
- 地图作为静态字段隐藏在模型对象
自身内部(使用静态方法)Destination