Java Transfer Object Pattern(トランスポートオブジェクトモード)

3470 ワード

トランスポートオブジェクトモード(Transfer Object Pattern)クライアントからサーバに複数の属性を持つデータを一度に渡すために使用されます.トランスポートオブジェクトは数値オブジェクトとも呼ばれます.トランスポートオブジェクトはgetter/setterメソッドを持つ簡単なPOJOクラスです.シーケンス化可能なので、ネットワークを介してトランスポートできます.動作はありません.サーバ側のビジネスクラスは通常、データベースから読みますデータを取得し、POJOに入力してクライアントに送信するか、値で渡します.クライアントの場合、トランスポートオブジェクトは読み取り専用です.クライアントは、独自のトランスポートオブジェクトを作成し、データベース内の数値を一度に更新するためにサーバに渡すことができます.以下に、この設計モードのエンティティを示します.
  • ビジネスオブジェクト(Business Object)-送信オブジェクトにデータを埋め込むビジネスサービス.
  • トランスポートオブジェクト(Transfer Object)-単純なPOJOで、属性を設定/取得する方法のみ.
  • クライアント(Client)-クライアントは、要求を送信するか、またはトラフィックオブジェクトに送信することができる.
  • トランスポートオブジェクトを作成します.
  • /**
     * 1.       。
     * @author mazaiting
     */
    public class StudentVO {
        private String name;
        private int rollNo;
        public StudentVO(String name, int rollNo) {
            this.name = name;
            this.rollNo = rollNo;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getRollNo() {
            return rollNo;
        }
        public void setRollNo(int rollNo) {
            this.rollNo = rollNo;
        }   
    }
    
  • ビジネス・オブジェクトを作成します.
  • /**
     * 2.       。
     * @author mazaiting
     */
    public class StudentBO {
        
        //        
        List students;
        
        public StudentBO() {
            students = new ArrayList();
            StudentVO student1 = new StudentVO("Robert", 0);
            StudentVO student2 = new StudentVO("John", 1);
            students.add(student1);
            students.add(student2);     
        }
        
        public void deleteStudent(StudentVO student){
            students.remove(student.getRollNo());
            System.out.println("Student: Roll No " 
                      + student.getRollNo() +", deleted from database");
        }
        
        public List getAllStudents() {
            return students;
        }
        
        public StudentVO getStudent(int rollNo){
            return students.get(rollNo);
        }
        
        public void updateStudent(StudentVO student){
            students.get(student.getRollNo()).setName(student.getName());
            System.out.println("Student: Roll No " 
                      + student.getRollNo() +", updated in the database");
        }
        
    }
    
  • は、StudentBOを使用してトランスポートオブジェクト設計モードを実証する.
  • /**
     * 3.    StudentBO            。
     * @author mazaiting
     */
    public class Client {
        public static void main(String[] args) {
            StudentBO studentBusinessObject = new StudentBO();
            
            //        
            for (StudentVO student : studentBusinessObject.getAllStudents()) {
                System.out.println("Student: [RollNo : "
                         +student.getRollNo()+", Name : "+student.getName()+" ]");
            }
            
            //     
            StudentVO student = studentBusinessObject.getAllStudents().get(0);
            student.setName("Michael");
            studentBusinessObject.updateStudent(student);
            
            //     
            studentBusinessObject.getStudent(0);
            System.out.println("Student: [RollNo : "
                      +student.getRollNo()+", Name : "+student.getName()+" ]");
            
        }
    }
    
  • 印刷結果
  • Student: [RollNo : 0, Name : Robert ]
    Student: [RollNo : 1, Name : John ]
    Student: Roll No 0, updated in the database
    Student: [RollNo : 0, Name : Michael ]