0

我用 Java 编写国际象棋程序的方式是,有一个 GameLauncher 类和一个包含所有其他类的 Game 类,因为所有这些类都需要访问 Game 的private Piece[][] board代表棋盘上棋子的实例变量。这些内部类是 Player、BoardPanel(一个 JPanel)、Piece 和所有其他子类(Rook、Horse、Bishop、King 等)。

我想知道实现这一点的标准方法是将类作为 Game 的内部类(从而允许它们board直接访问 Game 的对象)还是将它们作为单独的类并传递thisnew?

那是,

board[0][0] = new Car(new Point(0, 0), RED);

相比

board[0][0] = new Car(new Point(0, 0), RED, this);
4

2 回答 2

0

没有标准的方法可以做到这一点,尽管我猜人们会单独定义类。拥有一个内部类在逻辑上完全没问题!但是处理单独的类定义的方法很少。

  1. 单例/工厂类方法 - 每次需要时,在工厂类分布式电流板上都有一个静态方法。当然,您需要为您的数组创建包装类 - 一个 Board 类。但这有点蹩脚 - 只是个人意见。我不同意不惜一切代价以简单的方式进行编程的愿景。

  2. 让您的 Game 类实例化您的 Board 类(包含所有必要方法的数组的包装器)。然后将这个 Board 实例的引用传递给构造函数中的其他对象,并使这些对象记住这个 board 实例。这样,在程序的最开始只传递引用一次。

于 2013-07-03T20:31:59.827 回答
0

您可以将其他类创建为单独的类。正如您在问题中所说,其他每个类都可以简单地包含一个 Game 实例。对我来说似乎很好。但是,由于board是私有的,因此您需要创建一个public Piece[][] getBoard()方法,Game以便其他类可以访问该板。

于 2013-07-03T19:39:47.960 回答