首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java象棋程序设计的内部类与独立类

Java象棋程序设计的内部类与独立类
EN

Stack Overflow用户
提问于 2013-07-04 03:30:39
回答 2查看 609关注 0票数 0

就像我用Java语言编写国际象棋程序一样,有一个GameLauncher类和一个包含所有其他类的游戏类,因为所有这些类都需要访问表示棋盘上棋子的游戏实例变量private Piece[][] board。这些内部类是Player、BoardPanel (一个JPanel)、Piece和所有其他Pie子类(车、马、毕晓普、国王等)。

我想知道实现这一点的标准方法是让类作为游戏的内部类(从而允许它们直接访问游戏的board对象),还是让它们作为单独的类并将this传递给new的每个调用

那是,

代码语言:javascript
复制
board[0][0] = new Car(new Point(0, 0), RED);

代码语言:javascript
复制
board[0][0] = new Car(new Point(0, 0), RED, this);
EN

回答 2

Stack Overflow用户

发布于 2013-07-04 03:39:48

您可以将其他类创建为单独的类。正如您在问题中所说的,每个其他类都可以简单地包含一个Game实例。我觉得挺好的。但是,由于board是私有的,您可能希望在Game中创建一个public Piece[][] getBoard()方法,以便其他类可以访问该板。

票数 0
EN

Stack Overflow用户

发布于 2013-07-04 04:32:00

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

  1. 单例/工厂类方法-每次需要时,在工厂类分布式电路板中使用静态方法。当然,您需要为数组创建包装类-一个Board类。但这有点差劲--这只是我个人的观点。我并不赞同不惜一切代价以简单的方式编程的愿景。
  2. 让你的游戏类实例化你的Board类(数组的包装器,包含所有必要的方法)。然后将对Board实例的引用传递给构造函数中的其他对象,并使这些对象记住此board实例。这样,只需在程序开始时传递一次引用。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17456593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档