3
    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??

我想直接actionPerformed在 Job_GUI 本身中编写代码,类似于在 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我是否会远离 MVC 约定?你会把上面的片段放在哪里?controller如果我要使用DTO,DAO Design Pattern进行数据库交互,那么困惑在于确定我所拥有的所有类中的哪个类。

4

1 回答 1

3
       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);

在上面的代码中,你基本上是在做控制器的工作,因为你给你的 DTO 赋值,然后调用你的 DAO 的创建方法。这是Controller应该做的。所以你在这部分是对的,除了一个小的更正:

    JobDAO jdao = new JobDAO(conn);  //not preferable
    JobDAO jdao = new JobDAO();  //preferred inside Controller class

将建议您在 DAO 中保留特定于连接的代码。您的 Controller 类不应该知道您的数据库连接。您可以在 DAO 的创建/更新/删除方法中执行此操作。

DAO where you actually interact with DB is part of MODEL in MVC.

请记住几件事:

  • MVC(架构设计模式)强调关注点分离。因此,请确保您为 View、Controller 和 Model 定义了明确的类
  • 您的类名应该传达它属于哪个组件(BaseDAO 等)
  • 控制器控制视图和模型。所以你的视图和模型不应该互相了解。

正如你提到的,你已经很清楚 View 了。所以我没有对此做任何解释。

于 2013-01-26T15:51:53.113 回答