为了账号安全,请及时绑定邮箱和手机立即绑定

什么时候适合在棋盘游戏中使用 Java 接口?

什么时候适合在棋盘游戏中使用 Java 接口?

千巷猫影 2022-10-20 17:01:38
(注意:这更像是一个理论问题)你好!我创建了一个名为 checkers 的工作棋盘游戏,它有点像国际象棋,只是有不同的棋子和规则,而且我在不使用任何界面的情况下完成了这项工作。但是,我注意到它在我们的家庭作业说明中说至少应该使用一个接口。所以我想知道什么时候在 java 中使用接口是合适的,或者更具体地说,什么时候在棋盘游戏(如跳棋或国际象棋)中使用接口是有益的?我试图了解我可以为什么创建一个界面(如动作、绘制到板上等),同时最有可能使程序受益。
查看完整描述

3 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

对接口进行编程始终是一种好习惯,因为它将类形式化为具有一组所需的方法。它还可以收集实现了通用接口的类以协同工作。想象一下,您有许多具有 setColor 方法的对象。不必单独设置颜色或通过每种类型对象的列表设置颜色,您可以让它们执行以下操作:


Interface ColorSetter {

   public void setColor(Color color);

}


class Foo implements ColorSetter {

//details omitted

}


class Bar implements ColorSetter {

//details omitted

}


List<ColorSetter> colorSetters = new ArrayList<>();

colorSetters.add(new Foo());

colorSetters.add(new Bar());


// later...

for (ColorSetter c : colorSetters) {

   c.setColor(Color.blue);

}


查看完整回答
反对 回复 2022-10-20
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

任何类型的编程语言中的接口都是指定两方之间行为和抽象通信的合同。当您设计软件解决方案时,您希望按照最佳实践和模式构建它,以便将来更容易维护。

特别是在 Java 中,您同时拥有抽象类和接口。接口声明了一个类应该做什么(Java8+ 中的接口提供了指定行为的方法,默认情况下是实际方法,但我猜你的家庭作业还没有打算这样做。)由于您正在开发游戏,因此可能有兴趣抽象所有部分都应该处理的功能。他们应该知道如何给出他们的位置,知道他们是否仍然活跃在游戏中,知道适用于它的规则。您还可以抽象游戏期间执行的动作。每个动作都有其适用的特定部分或部分,知道它何时可以执行以及如何执行自身,甚至如何撤消它。你的游戏类也可以有一个列表来保存游戏中的动作历史。

您可以通过阅读 SOLID 原则和检查常见的软件设计模式(例如https://refactoring.guru/)来扩展您的知识。


查看完整回答
反对 回复 2022-10-20
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

通常,您的代码中有一些抽象。这意味着一些行为和数据可以被概括并封装在一些通用类型中——这可能是一个接口。你已经提到了一些——比如碎片——有没有一个叫做 Piece 的界面?还有运动 - 是否有一个名为运动的界面?


例如,一个 Piece 接口可能有一些常见的方法,例如:


public interface Piece {

    String getName();

    Position getPosition();

    List<Movement> getAvailableMovements();

    void move(Movement movement);

    BufferdImage getImage();

}

而 Piece 只会实现这些方法,因此拥有一块你知道它的名称、位置、图像、可用动作并且你可以移动它的部件。这只是抽象的命题,可能不完全适合您的设计。但是以这种方式,您可以只使用 Piece 而不是专门的类,在您的程序中提供它。


查看完整回答
反对 回复 2022-10-20
  • 3 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信