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??とは何ですか?

actionPerformedJob_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を使用する場合に、私が持っているすべてのクラスからどれがクラスであるかを特定することにあります。DTODAO 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 の create メソッドを呼び出すため、基本的にControllerの仕事をしています。これは、コントローラーが行うべきことです。したがって、1 つの小さな修正を除いて、この部分は正しいです。

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

DAO内に接続固有のコードを保持することをお勧めします。Controller クラスは、DB 接続について認識すべきではありません。これは、DAO の作成/更新/削除メソッド内で実行できます。

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

いくつかのことを覚えておいてください:

  • MVC (アーキテクチャ デザイン パターン) は、関心の分離を強調します。したがって、ビュー、コントローラー、およびモデルのクラスが明確に定義されていることを確認してください
  • クラス名は、それが属するコンポーネント (BaseDAO など) を伝える必要があります。
  • コントローラーはビューとモデルを制御します。したがって、ビューとモデルはお互いを認識しないでください。

そして、あなたが言ったように、あなたはすでにViewで明確です。だから私はそれについて何の説明もしていません。

于 2013-01-26T15:51:53.113 に答える