[typescript] 컴포지트 패턴과 타입스크립트의 결합 사례

컴포지트 패턴은 객체들을 트리 구조로 구성하여 부분-전체 계층을 표현하는 디자인 패턴입니다. 이 패턴은 단일 객체(리프) 및 객체들을 모아놓은 그룹(컴포지트)을 동일하게 취급하여 클라이언트가 단일 객체든, 그룹 객체든 동일한 방식으로 사용할 수 있도록 합니다. 타입스크립트는 정적 타입을 지원하는 프로그래밍 언어로, 이러한 유형의 구조를 쉽게 정의하고 유지할 수 있도록 도와줍니다.

컴포지트 패턴과 타입스크립트는 함께 사용할 때 객체들을 구조화하고 계층화하기 위해 강력한 조합이 될 수 있습니다. 예를 들어, UI 구성 요소의 계층구조를 모델링하거나 파일 시스템의 디렉토리와 파일을 표현할 때 유용하게 활용될 수 있습니다.

타입스크립트에서의 컴포지트 패턴 구현

다음은 타입스크립트를 사용하여 컴포지트 패턴을 구현하는 간단한 예제 코드입니다.

interface Component {
  operation(): void;
}

class Leaf implements Component {
  operation(): void {
    console.log("Leaf operation");
  }
}

class Composite implements Component {
  private children: Component[] = [];

  add(component: Component): void {
    this.children.push(component);
  }

  operation(): void {
    console.log("Composite operation");
    for (const child of this.children) {
      child.operation();
    }
  }
}

const leaf1: Component = new Leaf();
const leaf2: Component = new Leaf();
const composite: Component = new Composite();

composite.add(leaf1);
composite.add(leaf2);

composite.operation();

위 코드에서 Component는 모든 구성 요소가 구현해야 하는 인터페이스를 정의하고, LeafComposite 클래스는 이 인터페이스를 구현합니다. Composite 클래스는 자식 요소를 추가하고, 모든 자식 요소의 연산을 수행하는 데 사용됩니다.

마무리

컴포지트 패턴은 객체 지향 프로그래밍에서 계층 구조를 표현하는 강력한 방법입니다. 타입스크립트와 함께 사용할 때, 이러한 패턴을 유지보수 가능한 코드로 쉽게 구현할 수 있습니다. 이러한 방식으로, 타입스크립트는 복잡한 구조를 가진 애플리케이션을 개발하고 유지보수하는 데 도움이 됩니다.

참고문헌: