[typescript] 팩토리 메서드 패턴과 타입스크립트의 결합 사례

소개

팩토리 메서드 패턴은 객체를 생성하기 위한 디자인 패턴 중 하나로, 객체 생성을 서브 클래스에 위임하여 객체의 유형을 결정하는 방법을 정의합니다. 타입스크립트로 작성된 프로젝트에서 이 패턴을 활용하면 객체 생성과 관련된 로직을 캡슐화하고 재사용성을 높일 수 있습니다.

팩토리 메서드 패턴의 장점

팩토리 메서드 패턴은 객체 생성 로직을 캡슐화하여 유지보수성을 향상시키고 의존성을 줄입니다. 또한 서브 클래스를 통해 객체의 유형을 결정할 수 있어 확장성을 가진 설계가 가능합니다.

타입스크립트를 활용한 팩토리 메서드 패턴 구현

abstract class Product {
  abstract create(): void;
}

class ConcreteProduct1 extends Product {
  create() {
    console.log("Creating ConcreteProduct1");
  }
}

class ConcreteProduct2 extends Product {
  create() {
    console.log("Creating ConcreteProduct2");
  }
}

abstract class Creator {
  abstract factoryMethod(): Product;

  someOperation() {
    const product = this.factoryMethod();
    console.log("Executing someOperation with", product);
  }
}

class ConcreteCreator1 extends Creator {
  factoryMethod(): Product {
    return new ConcreteProduct1();
  }
}

class ConcreteCreator2 extends Creator {
  factoryMethod(): Product {
    return new ConcreteProduct2();
  }
}

const creator1 = new ConcreteCreator1();
creator1.someOperation(); // Output: Creating ConcreteProduct1, Executing someOperation with ConcreteProduct1

const creator2 = new ConcreteCreator2();
creator2.someOperation(); // Output: Creating ConcreteProduct2, Executing someOperation with ConcreteProduct2

위 예제는 타입스크립트로 팩토리 메서드 패턴을 구현한 것입니다. ProductCreator 추상 클래스를 정의하고, 서브 클래스에서 각각의 팩토리 메서드를 구현하여 객체 생성을 위임하고 있습니다.

결론

타입스크립트를 활용하여 팩토리 메서드 패턴을 구현하면 객체 생성과 관련된 로직을 쉽게 관리할 수 있고, 유연하고 확장 가능한 코드를 작성할 수 있습니다. 따라서 프로젝트의 요구사항에 맞게 이러한 디자인 패턴들을 적절히 활용하여 보다 효율적인 소프트웨어를 개발할 수 있습니다.

참고 자료