【发布时间】:2015-02-12 18:26:55
【问题描述】:
我正在创建一个代表学校的 Java 应用程序。我的目标是让应用程序对新功能保持开放,因此我正在尝试对其应用一些设计模式。
到目前为止,我有一个连接到我的程序的 HSQLDB。 在数据库中可以存储
- 学生
- 课程
- 年
- 考试
- 成绩
目前的结构如下:
- 每个对象都有包含属性 + setter 和 getter 的类
- 对于每个对象,都有一个 DAO 来管理 DB 上的 CRUD 操作
- 每个 DAO 都实现一个 GenericDAO 接口
如果我想创建一个新学生,我可以致电:
- PupilDao 瞳孔 = new PupilDao();
- pupil.connectToDB();
- pupil.add(new Pupil(name, age,...));
- pupil.disconnectDB();
每个 DAO 的 connectToDB() 和 disconnectDB() 方法都指向一个 DBuser-Classes 的 connect() 和 disconnect() 方法。因此,如果我想更改连接,只有一个地方可以这样做。 到目前为止,这些操作都有效。
我的问题是:
1.) 当前设计是否正确使用了 DAO?我问是因为我宁愿有一个 Dao 用于所有对象,因为现在 DAO 中有很多重复的代码。 (例如获取、更新、删除...)
现在 DB-Access 工作正常,我想使用 Swing 创建一个 GUI。尽管不是使用 MVC 模式,但我有一些这样做的经验。
2.) 据我了解,DAO + 我的对象类将是这里的模型。对吗?
3.) 我对 MVC 的理解是,在我的 View-Class(即 GUI)中,我为我的操作设置了侦听器,这些侦听器指向实现 ActionListener 接口的不同 Controller-Class,并且在我的 Controller-Classes 中,例如我将拥有一个创建新瞳孔的 actionPerformed()(使用 DAO / 模型 - 类)。我在正确的轨道上吗?
4.) 由一个大的 Controller 管理所有操作优于拥有不同的 Controller 吗?
我问这些问题是因为我阅读/观看了很多关于模式/OO-Design 的内容,并希望确保我的理解是正确的。 此外,我非常感谢您对我的设计的想法!以后可以做哪些更灵活或更好的维护?
在此先感谢您的每一个建议,并为有些冗长的解释感到抱歉!
菲利克斯
【问题讨论】:
标签: java swing user-interface model-view-controller dao