Entwurfsmuster - Objektmuster übertragen

Das Muster "Objekt übertragen" wird verwendet, wenn Daten mit mehreren Attributen auf einmal vom Client an den Server übergeben werden sollen. Das Übertragungsobjekt wird auch als Wertobjekt bezeichnet. Transfer Object ist eine einfache POJO-Klasse mit Getter / Setter-Methoden und kann serialisiert werden, damit sie über das Netzwerk übertragen werden kann. Es hat kein Verhalten. Die serverseitige Business Class ruft normalerweise Daten aus der Datenbank ab, füllt das POJO und sendet es an den Client oder übergibt es als Wert. Für den Client ist das Übertragungsobjekt schreibgeschützt. Der Client kann ein eigenes Übertragungsobjekt erstellen und an den Server übergeben, um die Werte in der Datenbank auf einmal zu aktualisieren. Im Folgenden sind die Entitäten dieser Art von Entwurfsmuster aufgeführt.

  • Business Object - Business Service füllt das Übertragungsobjekt mit Daten.

  • Transfer Object - Einfaches POJO mit Methoden zum Festlegen / Abrufen von Attributen.

  • Client - Der Client fordert das Übertragungsobjekt an oder sendet es an das Geschäftsobjekt.

Implementierung

Wir werden ein StudentBO als Geschäftsobjekt und ein Student als Übertragungsobjekt erstellen , das unsere Entitäten darstellt.

TransferObjectPatternDemo , unsere Demo-Klasse, fungiert hier als Client und verwendet StudentBO und Student , um das Entwurfsmuster für Übertragungsobjekte zu demonstrieren.

Schritt 1

Übertragungsobjekt erstellen.

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

Schritt 2

Geschäftsobjekt erstellen.

StudentBO.java

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

public class StudentBO {
	
   //list is working as a database
   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");
   }

   //retrive list of students from the 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");
   }
}

Schritt 3

Verwenden Sie das StudentBO , um das Entwurfsmuster für Übertragungsobjekte zu demonstrieren.

TransferObjectPatternDemo.java

public class TransferObjectPatternDemo {
   public static void main(String[] args) {
      StudentBO studentBusinessObject = new StudentBO();

      //print all students
      for (StudentVO student : studentBusinessObject.getAllStudents()) {
         System.out.println("Student: [RollNo : " + student.getRollNo() + ", Name : " + student.getName() + " ]");
      }

      //update student
      StudentVO student = studentBusinessObject.getAllStudents().get(0);
      student.setName("Michael");
      studentBusinessObject.updateStudent(student);

      //get the student
      student = studentBusinessObject.getStudent(0);
      System.out.println("Student: [RollNo : " + student.getRollNo() + ", Name : " + student.getName() + " ]");
   }
}

Schritt 4

Überprüfen Sie die Ausgabe.

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