転送オブジェクトモード


Transfer Object Patternは、複数の属性を持つデータをクライアントからサーバーに一度に転送するために使用されます。転送オブジェクトは数値オブジェクトとも呼ばれます。転送オブジェクトは、ゲッター/セッター メソッドを備えた単純な POJO クラスであり、シリアル化可能であるため、ネットワーク経由で転送できます。動作はありません。サーバー側のビジネス クラスは通常、データベースからデータを読み取り、POJO にデータを入力し、それをクライアントに送信するか、値で渡します。クライアントにとって、トランスポート オブジェクトは読み取り専用です。クライアントは独自の転送オブジェクトを作成し、それをサーバーに渡してデータベース内の値を一度に更新できます。このデザインパターンの実体は以下の通りです。

  • ビジネスオブジェクト - 転送オブジェクトのデータを設定するビジネスサービス。

  • Transfer Object - プロパティを設定/取得するメソッドのみを備えたシンプルな POJO。

  • クライアント - クライアントはリクエストを送信したり、トランスポート オブジェクトをビジネス オブジェクトに送信したりできます。

実装

ビジネス オブジェクトとして StudentBO を作成し、転送オブジェクトとして StudentVO を作成します。どちらもエンティティを表します。

TransferObjectPatternDemo、私たちのデモクラスはクライアントとしてここにあり、StudentBOStudentを使用して転送オブジェクトの設計パターンをデモンストレーションします。

transferobject_pattern_uml_diagram.jpg

ステップ 1

転送オブジェクトを作成します。

StudentVO.java

public class StudentVO {
   private String name;
   private int rollNo;

   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

ビジネス オブジェクトを作成します。

StudentBO.java

import java.util.ArrayList;
import java.util.List;

public class StudentBO {
	
   //列表是当作一个数据库
   List<StudentVO> students;

   public StudentBO(){
      students = new ArrayList<StudentVO>();
      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<StudentVO> 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");
   }
}

ステップ 3

StudentBOを使用して、転送オブジェクトの設計パターンをデモンストレーションします。

TransferObjectPatternDemo.java

public class TransferObjectPatternDemo {
   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()+" ]");
   }
}

ステップ 4

出力を確認します。

りー