在java中实现它的最佳方法

时间:2013-08-09 23:20:00

标签: java implementation

所以我有这个要求:

  • 名为Destination
  • 的类
  • 名为Destinations的HashMap

Destination类有一个Door类型的对象数组。所以基本上我从文件中读到一个“门”,每个门都有一个属性“目的地”,它告诉我它属于哪个目的地。

我的问题是,什么更好?:

a)对象中保存目标的方法,该目标检查HashMap目的地中是否存在新门的目的地,因此将该门插入其现有目的地或创建新目的地然后插入门。

b)覆盖(?)Destinations HashMap的add方法,并在那里实现之前描述的功能。

c)另一种方式。

谢谢。

1 个答案:

答案 0 :(得分:3)

在Java和类似语言中,我们更有可能为我们的应用程序创建具有有意义名称的类,而不是使用简单列表,地图和集合(就像在更动态的语言中一样)。你几乎从未见过的是有人继承HashMap或ArrayList或HashSet并覆盖他们的add或put方法。

最“Java-esque”的方法是定义一个名为Destinations的类,它可以包含(作为字段)目标对象的哈希映射,由id索引。然后,您将只创建对您的应用程序有意义的方法,例如

add(door, destination)

可以封装你的游戏逻辑。没有人需要知道幕后有地图(或列表或集)。公开地图意味着你的应用程序有一个漏洞抽象,你要避免。

也许更好:最适合你的是有可能只有

class Door

class 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内部隐藏为静态字段(使用静态方法)的地图。