【发布时间】:2013-01-26 14:21:45
【问题描述】:
public abstract class BaseDAO<T extends BaseDTO> {
public Integer create(T dto) {
}
public Integer update(T dto) {
}
public Integer delete(T dto) {
}
}
public class JobDAO extends BaseDAO<JobDTO> {
public JobDAO(Connection conn) {
super(conn);
}
@Override
public String getDBTableName() {
return "JobTABLE";
}
}
public class BaseDTO {
protected Integer ID;
public Integer getID() {
return ID;
}
public void setID(Integer ID) {
this.ID = ID;
}
}
public class JobDTO extends BaseDTO {
Integer employerID;
//getter
//setter
}
public class Job_GUI extends javax.swing.JFrame {
//GUI properties
}
我试图了解Model, View, Controller 约定,我想将MVC 应用于我拥有的由数据传输和访问对象组成的上述类结构。我不明白的是,我的结构是否高于 MVC?如果有,型号是什么?我猜 DTO 本身就是Model。 Job_GUI 是我已经知道的View,但是Controller 是什么?
我想直接在 Job_GUI 本身中编写actionPerformed 代码,类似这样 sn-p 在 db 中创建作业:
JobDAO jdao = new JobDAO(conn);
//create object jobDTO to hold all form values to be passed to JobDAO
final JobDTO jobDTO = new JobDTO();
//populating JobDTO with values from form
jobDTO.setEmployerID(id);
jobDTO.setDescription(description.getText());
jobDTO.setTitle(txtTitle.getText());
jdao.create(jobDTO);
但以上内容应该在Job_GUI 类本身或其他地方。如果我要在Job_GUI 中插入上面的 sn-p,我是否会脱离 MVC 约定?你会把上面的sn-p放在哪里?如果我要使用DTO,DAODesign Pattern 进行数据库交互,那么困惑在于从我所拥有的所有类别中识别出哪个是controller 类。
【问题讨论】:
-
模型由 DAO 类使用。控制器使用 DAO 类来决定它应该呈现哪些视图。如果您有很多业务规则,最好有一个业务层并让您的控制器使用它而不是 DAO 类。另一方面,业务层将使用 DAO 类。在 Controller 和 VIews 之间,您可以传输 DTO 对象或 ViewModel。
-
@FelipeOriani 尽管我感谢您的评论,但并没有真正回答我的问题。我想知道我是否通过将代码的 sn-p 添加到 Job_GUI 类本身的 actionPerformed 方法中来遵循 MVC 约定。
标签: java sql model-view-controller design-patterns data-transfer-objects