디자인 패턴 - Composite Pattern

Table of Contents

출처 : https://www.tutorialspoint.com/design_pattern/composite_pattern.htm

복합 엔티티 패턴은 EJB 지속성 메커니즘에서 사용됩니다. 복합 엔터티는 개체의 그래프를 나타내는 EJB 엔터티 빈입니다. 복합 엔터티가 업데이트되면 내부 종속 개체 빈은 EJB 엔터티 빈에 의해 관리되는 것처럼 자동으로 업데이트됩니다. 다음은 Composite Entity Bean의 참여자입니다.

  • Composite Entity - 기본 엔터티 빈입니다. grained object이거나 지속성 목적으로 사용할 grained object를 포함할 수 있습니다.

  • Coarse-Grained Object - 이 개체에는 dependent Object가 포함되어 있습니다. 자신만의 라이프 사이클을 가지고 있으며 dependent Object의 라이프 사이클도 관리합니다.

  • Dependent Object - Dependent Object는 지속성 수명 주기에 대해 Grained object에 의존하는 개체입니다.

  • Strategies - Strategie는 Composite Entity를 구현하는 방법을 나타냅니다.

Implementation

우리는 CompositeEntity 역할을 하는 CompositeEntity 객체를 생성할 것입니다. CoarseGrainedObject는 종속 개체를 포함하는 클래스입니다. CompositeEntityPatternDemo, 데모 클래스는 Client 클래스를 사용하여 복합 엔티티 패턴의 사용을 보여줍니다.

Composite Entity Pattern UML Diagram

Step 1

Dependent Objects를 만듭니다.

DependentObject1.java

 1public class DependentObject1 {
 2
 3   private String data;
 4
 5   public void setData(String data){
 6      this.data = data;
 7   }
 8
 9   public String getData(){
10      return data;
11   }
12}

DependentObject2.java

 1public class DependentObject2 {
 2
 3   private String data;
 4
 5   public void setData(String data){
 6      this.data = data;
 7   }
 8
 9   public String getData(){
10      return data;
11   }
12}

Step 2

Grained Object를 만듭니다.

CoarseGrainedObject.java

 1public class CoarseGrainedObject {
 2   DependentObject1 do1 = new DependentObject1();
 3   DependentObject2 do2 = new DependentObject2();
 4
 5   public void setData(String data1, String data2){
 6      do1.setData(data1);
 7      do2.setData(data2);
 8   }
 9
10   public String[] getData(){
11      return new String[] {do1.getData(),do2.getData()};
12   }
13}

Step 3

Composite Entity를 만듭니다.

CompositeEntity.java

 1public class CompositeEntity {
 2   private CoarseGrainedObject cgo = new CoarseGrainedObject();
 3
 4   public void setData(String data1, String data2){
 5      cgo.setData(data1, data2);
 6   }
 7
 8   public String[] getData(){
 9      return cgo.getData();
10   }
11}

Step 4

Composite Entity를 사용하기 위한 Client 클래스를 생성합니다.

Client.java

 1public class Client {
 2   private CompositeEntity compositeEntity = new CompositeEntity();
 3
 4   public void printData(){
 5
 6      for (int i = 0; i < compositeEntity.getData().length; i++) {
 7         System.out.println("Data: " + compositeEntity.getData()[i]);
 8      }
 9   }
10
11   public void setData(String data1, String data2){
12      compositeEntity.setData(data1, data2);
13   }
14}

Step 5

_Client_를 사용하여 복합 엔티티 디자인 패턴 사용을 보여줍니다.

CompositeEntityPatternDemo.java

 1public class CompositeEntityPatternDemo {
 2   public static void main(String[] args) {
 3
 4       Client client = new Client();
 5       client.setData("Test", "Data");
 6       client.printData();
 7       client.setData("Second Test", "Data1");
 8       client.printData();
 9   }
10}

Step 6

출력을 확인합니다.

1Data: Test
2Data: Data
3Data: Second Test
4Data: Data1

이 시리즈의 게시물