作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Java 新手,正在从事一个小型大学项目,大约有 30 个类(class)。
我的项目是开发一款关于 build 城市的游戏,我期望的游戏应该包含以下功能:
我只是想避免让我的主类因不同的对象而变得太大,例如我的游戏将有大约 20 个建筑物,每个建筑物都有不同数量的房间和导出..
为了达到设计,我需要解决以下问题:
最佳答案
我将您的问题解释为如何划分职责以避免类变得过于困惑和复杂。这是一个非常好的问题,但不幸的是没有简单的答案:有很多技术,而最适合您的情况的技术将在很大程度上取决于您的问题空间。
您可能听说过 Single Responsibility Principle 。本质上,这意味着每个类都负责一项功能。从逻辑上讲,这意味着您的代码将有许多小类,它们只做一件简单的事情。改变类(class)的唯一原因是那一件事发生了变化。因此,例如,您的 main 方法可能负责启动 UI,但不设置所有游戏数据。
那么如何实现这一目标呢?有几种技术可以将逻辑从类中分离出来,以避免它变得又长又困惑,但最重要的(IMO)是 Delegation 。这涉及将一项功能委托(delegate)给另一个类,然后调用该类中的方法。
例如:
class Game {
public static void main(String[] args) {
Game game = new Game();
game.setUpUI();
game.configureGameData();
game.start();
}
public void setUpUI() {
}
public void configureGameData() {
}
public void start() {
}
}
可能会变成:
class Game {
private final UI_Maker uiMaker;
private final GameData gameData;
private final GameStarter gameStarter;
public static void main(String[] args) {
Game game = new Game();
game.start();
}
private void start() {
uiMaker.makeUI();
gameData.loadData();
gameStarter.start();
}
}
这种结构有很多优点:
关于java - 如何在主类之外或第二个主类中创建游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59041505/
我是一名优秀的程序员,十分优秀!