使用 5 个类,您可以在没有包结构的情况下度过难关。但是您可能会开始考虑对您的程序代码进行更高级别的组织。
将您的数据对象放在一个包中--com.you.program.data
将您的 GUI 至少放在另一个包中——com.you.program.ui
主程序可以在 com.you.program 或 com.you.program.main 中,或者,如果它更简单,如果它主要只是启动 UI,则只需将主程序放在 UI 包中。
请注意,com.you 理论上是您的网站,而“程序”是您正在处理的程序的名称。
笔记
关于是否将应用程序的业务逻辑与将其连接到用户的 UI 分开存在一个理论讨论。这样做可以更轻松地将不同的 UI 放在事物的前面,并允许在桌面/笔记本电脑上运行的用户使用 Swing 界面,为在平板电脑和手机上运行浏览器的用户提供 Web 界面。
这不是一个坏主意,隔离它的一种方法是在您的 IDE 中创建两个项目。一个保存 UI 层代码,一个保存业务层代码。这是一个定义明确的模式并且效果很好。
隔离 UI 和业务层的另一种方法是使用包,但 IDE 不会强制执行任何依赖项管理。但在一个小项目上,它确实运作良好。你必须遵守纪律。(永远不要忘记小项目是如何随着时间的推移变成大项目的,而且他们会出人意料地做到这一点。)
如果您使用项目,请确保在业务层项目使用 UI 层时没有依赖关系,而没有实现定义良好的模式,可能是观察者(GOF 模式)。然而,UI 层可以并且将依赖于业务层。您还可以在独立构建过程中使用擅长此功能的工具(如 Maven 或 Gradle)强制执行此操作。
不管你怎么做,你都要思考什么是业务逻辑。如果您将一些 Javascript 代码添加到浏览器或将一些代码添加到 Swing GUI 或电话应用程序以检查电话号码是否是该国家/地区的有效格式,它可能不会咬你。但是,如果您以类似的方式将代码添加到前端,直接调用电话号码数据库以验证前几位数字是否有效,那么您已经越界了。在这些情况下,该逻辑需要在业务部分中,并且 UI 部分需要调用它来检查该电话号码。对于许多边缘情况,这始终是一个难以解决的问题。