Mẫu thiết kế - Mẫu đối tượng chuyển

Mẫu Đối tượng Truyền được sử dụng khi chúng ta muốn truyền dữ liệu có nhiều thuộc tính trong một lần từ máy khách đến máy chủ. Đối tượng chuyển giao còn được gọi là Đối tượng giá trị. Đối tượng chuyển giao là một lớp POJO đơn giản có các phương thức getter / setter và có thể tuần tự hóa để nó có thể được truyền qua mạng. Nó không có bất kỳ hành vi nào. Lớp nghiệp vụ Server Side thường lấy dữ liệu từ cơ sở dữ liệu và điền vào POJO và gửi nó đến máy khách hoặc chuyển nó theo giá trị. Đối với máy khách, đối tượng chuyển là chỉ đọc. Máy khách có thể tạo đối tượng truyền của riêng mình và chuyển nó đến máy chủ để cập nhật các giá trị trong cơ sở dữ liệu trong một lần. Sau đây là các thực thể của kiểu thiết kế này.

  • Business Object - Dịch vụ Kinh doanh điền vào Đối tượng chuyển với dữ liệu.

  • Transfer Object - POJO đơn giản chỉ có các phương thức để đặt / lấy thuộc tính.

  • Client - Khách hàng yêu cầu hoặc gửi Đối tượng chuyển đến Đối tượng kinh doanh.

Thực hiện

Chúng ta sẽ tạo một StudentBO làm Đối tượng kinh doanh, Student làm Đối tượng chuyển đại diện cho các thực thể của chúng ta.

TransferObjectPatternDemo , lớp demo của chúng tôi, đang hoạt động như một khách hàng ở đây và sẽ sử dụng StudentBOStudent để trình diễn Mẫu thiết kế đối tượng chuyển.

Bước 1

Tạo đối tượng chuyển giao.

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

Bước 2

Tạo Đối tượng Kinh doanh.

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

Bước 3

Sử dụng StudentBO để chứng minh Mẫu thiết kế đối tượng chuyển.

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

Bước 4

Xác minh kết quả đầu ra.

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