mode objet de transfert


Le modèle d'objet de transfert est utilisé pour transférer des données avec plusieurs attributs du client vers le serveur en même temps. Les objets de transfert sont également appelés objets numériques. L'objet de transfert est une simple classe POJO avec des méthodes getter/setter, et il est sérialisable afin de pouvoir être transféré sur le réseau. Il n'a aucun comportement. Les classes métier côté serveur lisent généralement les données de la base de données, remplissent le POJO et les envoient au client ou les transmettent par valeur. Pour le client, les objets de transport sont en lecture seule. Le client peut créer son propre objet de transfert et le transmettre au serveur pour mettre à jour les valeurs de la base de données en une seule fois. Voici les entités de ce modèle de conception.

  • Business Object (Business Object) - Service métier qui remplit les données pour les objets de transfert.

  • Transfer Object - Un POJO simple avec uniquement des méthodes pour définir/obtenir des propriétés.

  • Client - Le client peut envoyer des requêtes ou transférer des objets vers des objets métier.

Mise en œuvre

Nous allons créer un StudentBO comme objet métier et un StudentVO comme objet de transfert, tous deux qui représentent notre entité.

TransferObjectPatternDemo, notre classe de démonstration est ici en tant que client et utilisera StudentBO et Student pour démontrer le modèle de conception d'objet de transfert.

transferobject_pattern_uml_diagram.jpg

Étape 1

Créez l'objet de transfert.

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;
   }
}

Étape 2

Créez l'objet métier.

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");
   }
}

Étape 3

Utilisez StudentBO pour démontrer le modèle de conception d'objet de transfert.

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()+" ]");
   }
}

Étape 4

Vérifiez la sortie.

Student: [RollNo : 0, Name : Robert ]
Student: [RollNo : 1, Name : John ]
Student: Roll No 0, updated in the database
Student: [RollNo : 0, Name : Michael ]