gpt4 book ai didi

java - 多个类应该如何用于应用程序的不同屏幕?

转载 作者:行者123 更新时间:2023-11-30 03:37:13 26 4
gpt4 key购买 nike

我有一个 child 数学游戏应用程序。自从我上大学以来,我过去的所有项目通常只有一个上帝对象,但对于这个应用程序,我将我的代码分成多个类:

  • MathsGame.java:初始化组件并构造和控制 UI 的主类。
  • DiffScreen.java:包含在难度选择屏幕上使用的方法。
  • GameScreen.java:包含在游戏屏幕上使用的方法。
  • EndGameScreen.java:包含在游戏结束屏幕上使用的方法。
  • MigJPanel.java:扩展 JPanel 并将布局设置为 MigLayout 并添加 mask 边框。

3 个 XScreen 类控制的每个屏幕只是 MigJPanel 的一个实例,并且使用 CardPanel 容器 JPanel 切换屏幕。

我想知道如何将代码划分到每个类,以便正确抽象它们,但我不完全确定如何解决这个问题。

  1. 我的 3 个屏幕类是否应该从我的 MigJPanel 扩展,以便可以实例化它们?

    因此,我的 DiffScreenGameScreenEndGameScreen 类只包含与每个屏幕相关的方法,然后从 调用这些方法>MathsGame,每个屏幕都会在自己的类中控制自己。

  2. 如果上一个问题是肯定的,每个屏幕的 UI 组件是否应该在该屏幕的类中制作?

    目前,三个屏幕中每个屏幕的所有组件都是在我的 MathsGame 构造函数中创建的。这使得屏幕和“控制”类(我现在很少使用这个词)之间的联系更加分离。因此,每个屏幕只是 MigJPanel 的一个实例,其组件是在 MathsGame 中构造的。例如,EndGameScreen 类与最终游戏屏幕的唯一关系是,当 MathsGame 导致显示最终游戏屏幕时,在那里所做的任何操作都会生成一个方法在 EndGameScreen 中从 MathsGame 调用。

我希望我能很好地解释自己。如果没有,请发表评论,我会澄清。任何帮助将不胜感激!

最佳答案

  1. 是的。

注重 self 控制并维护责任范围。每个 UI 屏幕都有责任管理其内容,没有其他人,事实上,您应该防止允许对这些组件进行无限制的修改,并仅通过托管方法(setter 和 getter)间接提供访问,这允许修改例如,您想要更改的属性,而不是简单地通过 getter 提供组件,这可以防止人们删除您不想删除的组件时出现问题。

如果需要,您还可以使用接口(interface)来维护通用功能,因此,如果 MathsGame 实际上只想处理一定量的信息/功能,您可以使用所有其他接口(interface)都可以使用的接口(interface)。屏幕使用这将简化过程,因为 MathsGame 只需要了解实现接口(interface)的类,而不是可能发生的所有其他事情......作为建议......

Also, where should I put the code for switching between screens?

从我的角度来看,MathsGame 游戏有责任确定何时以及在哪个屏幕上显示。我通常会做的是提供某种通知过程,当前屏幕可以要求 MathsGame 切换屏幕,可能通过监听器或其他商定的接口(interface)。这意味着每个屏幕都需要引用 MathsGame

我不是直接传递它 (MathsGame),而是创建一个 MathsGame 将实现的接口(interface)(例如 NavigationController),该接口(interface)定义了例如,每个子屏幕可以使用的调用/合约(nextScreen/previousScreen)。

看看Model-View-Controller获取更多想法

关于java - 多个类应该如何用于应用程序的不同屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27555410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com