객체 전송 모드
Transfer Object Pattern은 여러 속성을 가진 데이터를 클라이언트에서 서버로 한 번에 전송하는 데 사용됩니다. 전송 객체는 숫자 객체라고도 합니다. 전송 객체는 getter/setter 메소드가 있는 간단한 POJO 클래스이며 직렬화 가능하므로 네트워크를 통해 전송할 수 있습니다. 동작이 없습니다. 서버 측 비즈니스 클래스는 일반적으로 데이터베이스에서 데이터를 읽고 POJO를 채운 다음 클라이언트에 보내거나 값으로 전달합니다. 클라이언트에게 전송 개체는 읽기 전용입니다. 클라이언트는 자체 전송 객체를 생성하고 이를 서버에 전달하여 데이터베이스의 값을 한 번에 업데이트할 수 있습니다. 다음은 이 디자인 패턴의 엔터티입니다.
Business Object - 전송 객체에 대한 데이터를 채우는 비즈니스 서비스입니다.
Transfer Object - 속성을 설정/가져오는 메소드만 있는 간단한 POJO입니다.
Client - 클라이언트는 요청을 보내거나 전송 개체를 비즈니스 개체로 보낼 수 있습니다.
Implementation
우리는 비즈니스 객체로 StudentBO를 생성하고 전송 객체로 StudentVO를 생성할 것입니다. 둘 다 엔터티를 나타냅니다.
TransferObjectPatternDemo, 데모 클래스는 클라이언트로 제공되며 StudentBO 및 Student를 사용하여 전송 객체 디자인 패턴을 시연합니다.
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단계
출력을 확인합니다.
rreee