我正在为我的AP计算机科学项目制作Java游戏。它在游戏板上玩,你有一个边界,内部空间,然后是一个特殊类型的内部空间。这三者是截然不同的,每一种都有独特的行为,但它们都是相互关联的,因为它们都在游戏板上。
一旦它们被制作出来,它们将保持不变 - 角色将处理所有移动以及它们所处的任何空间的适当行为。
目标是将所有这些都放在二维数组中,并且我不确定如何最好地接近它。我考虑过以下事情
Object
为类型。所有这些看起来都有点hackish。处理这个问题的合适方法是什么?
答案 0 :(得分:1)
#1绝对应该是你的首选,而且它根本不是hackish。我可能会选择某种名为BoardSquare
或类似的抽象类,并将所有内容都从中继承。
一个类接近空,甚至是空的这一事实本身并不坏(尽管如果类是空的,它应该是一个接口)。在Java 8中实现lambdas的主要动机之一是类/接口,它们只是一个函数的包装器(考虑comparator或closeable)。而且,谁说它应该是空的?我可以想到几种可能常见的方法:Square.moveTo()
,moveFrom()
,actOn()
,convert()
,status()
toString()
等。
#2和#3 将工作,并且在技术上并不是hackish,但它们使您的代码很难维护/升级。添加新的方形类型会发生什么?当你想要改变一个人而不是其他人的行为时会发生什么?等。