Java Design Pattern - Transfer Object Pattern

업데이트:

Design Pattern

  • 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것이다.
  • 디자인 패턴은 알고리즘이 아니라 상황에 따라 자주 쓰이는 설계 방법을 정리한 코딩 방법론일 뿐이며 모든 상황의 해결책이 아니다.

Transfer Object Pattern

  • 여러 속성을 가진 데이터를 Client에서 Server로 한 번에 전달할 때 사용된다.

Example

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

}
  • Value Object 역할을 수행할 StudentVO 클래스를 정의한다.
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");
  }

  // Retrieve list of student 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());
    System.out.println("Student: Roll No " + student.getRollNo() + ", updated from database");
  }

}
  • Business Object 역할을 담당하는 StudentBO 클래스를 정의한다.
public class TransferObjectPatternMain {

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

}
  • StudentBO 객체를 사용하여 StudentVO를 조회 및 수정을 해본다.

Source

Sample Code는 여기에서 확인 가능합니다.

댓글남기기