制作一组三个温和相关的课程

时间:2014-05-20 23:11:03

标签: java arrays inheritance interface

我正在为我的AP计算机科学项目制作Java游戏。它在游戏板上玩,你有一个边界,内部空间,然后是一个特殊类型的内部空间。这三者是截然不同的,每一种都有独特的行为,但它们都是相互关联的,因为它们都在游戏板上。

一旦它们被制作出来,它们将保持不变 - 角色将处理所有移动以及它们所处的任何空间的适当行为。

目标是将所有这些都放在二维数组中,并且我不确定如何最好地接近它。我考虑过以下事情

  1. 使用空的或接近空的接口或抽象类,其中常规空间和特殊空间从抽象空间类继承,并且空间类和边框类实现接口或扩展父抽象类
  2. 将它们全部声明为相同的类型,并根据它的类型定义不同的行为。
  3. 将其设为二维数组列表,其中Object为类型。
  4. 所有这些看起来都有点hackish。处理这个问题的合适方法是什么?

1 个答案:

答案 0 :(得分:1)

#1绝对应该是你的首选,而且它根本不是hackish。我可能会选择某种名为BoardSquare或类似的抽象类,并将所有内容都从中继承。

一个类接近空,甚至是空的这一事实本身并不坏(尽管如果类是空的,它应该是一个接口)。在Java 8中实现lambdas的主要动机之一是类/接口,它们只是一个函数的包装器(考虑comparatorcloseable)。而且,谁说它应该是空的?我可以想到几种可能常见的方法:Square.moveTo()moveFrom()actOn()convert()status() toString()等。

#2和#3 工作,并且在技术上并不是hackish,但它们使您的代码很难维护/升级。添加新的方形类型会发生什么?当你想要改变一个人而不是其他人的行为时会发生什么?等。