【发布时间】:2015-07-14 22:50:13
【问题描述】:
我正在尝试从头开始创建图形抽认卡应用程序。我有几个问题:
一个。过去我使用 Swing 构建了一些应用程序,计算器应用程序。但我觉得这是一个微不足道的应用程序,所以我想提高我作为 Java 开发人员的技能。
b.有人告诉我,一个黄金标准是构建一个使用其中之一的小型应用程序:MVC、MVM、MVVM 等等。由于我正在学习设计模式,我希望在应用程序中使用它。
c。我的课是这样的:
- 一个模型:Flashcard.java(它有一个答案列表,一个列表 图片,一个问题),一个抽认卡管理器(执行 CRUD)
- 不同的视图类:GUI 界面
- 控制器:所有事件监听器
- 应用:初始化应用
d。我试图阅读这种组合的在线示例,并且为 Manager 或 DAO 提出的建议是让它连接到数据库的 JDBC。我试图通过使用 HashMap> 来模拟这一点。这是正确的还是我必须使用 JDBC 或 SQLite?
e。我还应该有一个控制器-视图对,即每个使用事件侦听器或窗口控制器的 JComponent(启动窗口、主应用程序窗口、子窗口)?
f。控制器类也应该是所有这些控制器的接口吗?
我没有代码,因为我仍在开发它,但我只是想大致了解一下。感谢您回答我的问题。
【问题讨论】:
-
(d) 听起来很合理,您要做的是隐藏底层实现,因此如果您以后决定使用 JDBC 连接,则无需更改所有依赖的代码它
-
你想多了(e),并不是每个
JComponent都需要拥有自己的控制器。事实上,你会发现这完全是一件痛苦的事,因为JComponents 有自己的控制器。相反,每个逻辑“视图”(可能是多个组件的容器)都需要一个控制器。在视图和控制器之间,有一个契约,描述了两者可以执行的动作和功能。当我做这种事情时,我会努力不将任何 UI 组件直接暴露给任何外部源 -
这意味着我倾向于将监听器附加到视图中的组件,然后使用视图/控制器契约通过这些监听器进行通信。这意味着如果我想改变视图的工作方式,我不需要重新创建合约,只需确保我可以支持它
-
(f) 是的。模型和视图也应该如此。这样,您始终按照合同而不是执行来工作
-
控制器是模型和视图之间的协调者,它监视这两者产生的事件并协调所需的更新。尽量不要将控制器用作两者的微管理器。模型和视图都应该有自己的内部工作,然后支持它们与控制器之间的合同。详细例子看here
标签: java swing user-interface model-view-controller repository-pattern