Java Design Pattern - Composite Entity Pattern

업데이트:

Design Pattern

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

Composite Entity Pattern

  • EJB Persistence Mechanism에서 사용되는 디자인 패턴이다.
  • Composite Entity는 객체의 그래프를 나타내는 EJB Entity Bean이다.
  • Composite Entity가 업데이트되면 내부적으로 종속된 Bean이 EJB Entity에 의해 관리되어 자동으로 업데이트된다.

Example

public class DependentObject1 {

  private String data;

  public void setData(String data) {
    this.data = data;
  }

  public String getData() {
    return this.data;
  }

}
public class DependentObject2 {

  private String data;

  public void setData(String data) {
    this.data = data;
  }

  public String getData() {
    return this.data;
  }

}
  • 종속된 Bean을 담당할 두 DependentObject1, DependentObject2를 정의한다.
public class CoarseGrainedObject {

  DependentObject1 do1 = new DependentObject1();
  DependentObject2 do2 = new DependentObject2();

  public void setData(String data1, String data2) {
    do1.setData(data1);
    do2.setData(data2);
  }

  public String[] getData() {
    return new String[] { do1.getData(), do2.getData() };
  }

}
public class CompositeEntity {

  private CoarseGrainedObject cgo = new CoarseGrainedObject();

  public void setData(String data1, String data2) {
    cgo.setData(data1, data2);
  }

  public String[] getData() {
    return cgo.getData();
  }

}
  • CoarseGrainedObject를 통해 자체 수명주기가있는 개체로 다른 개체에 대한 자체 관계를 관리한다.
  • CompositeEntity는 CoarseGrainedObject이거나 CoarseGrainedObject를 참조 할 수 있는 객체이다.
public class Client {

  private CompositeEntity compositeEntity = new CompositeEntity();

  public void printData() {
    for (int i = 0; i < compositeEntity.getData().length; i++) {
      System.out.println("Data: " + compositeEntity.getData()[i]);
    }
  }

  public void setData(String data1, String data2) {
    compositeEntity.setData(data1, data2);
  }

}
  • CompositeEntity를 사용하는 Client를 정의한다.
public class CompositeEntityPatternMain {

  public static void main(String[] args) {
    Client client = new Client();
    client.setData("Test", "Data");
    client.printData();

    client.setData("Second Test", "Data1");
    client.printData();
  }

}
  • Client를 이용하여 Composite Entity Pattern을 확인한다.

Source

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

댓글남기기