[typescript] 추상 클래스를 활용한 템플릿 메서드 패턴 구현 방법

소프트웨어 개발에서 디자인 패턴은 반복적으로 발생하는 문제에 대한 해결책을 제시하는 유용한 도구입니다. 여러 가지 디자인 패턴 중에서 템플릿 메서드 패턴은 특히 상속을 통해 코드를 재사용하고 유연한 구조를 구현하는 데 도움이 됩니다. 이번에는 TypeScript를 사용하여 추상 클래스를 활용한 템플릿 메서드 패턴을 구현하는 방법에 대해 알아보겠습니다.

템플릿 메서드 패턴이란?

템플릿 메서드 패턴은 행위 디자인 패턴의 한 종류로, 알고리즘의 뼈대를 정의하면서 알고리즘의 일부 단계를 서브 클래스에서 구현할 수 있게 합니다. 이 패턴을 사용하면 알고리즘의 구조를 수정하지 않고 특정 단계의 구현을 바꿀 수 있어 유연성이 높아집니다.

추상 클래스를 활용한 템플릿 메서드 패턴 구현

이제 TypeScript를 사용하여 추상 클래스를 활용한 간단한 템플릿 메서드 패턴을 구현해보겠습니다.

abstract class DataProcessor {
  process(): void {
    this.readData();
    this.transformData();
    this.saveData();
  }

  protected abstract readData(): void;

  protected abstract transformData(): void;

  protected abstract saveData(): void;
}

class MyDataProcessor extends DataProcessor {
  protected readData(): void {
    console.log('Reading data from source');
  }

  protected transformData(): void {
    console.log('Transforming data');
  }

  protected saveData(): void {
    console.log('Saving data to destination');
  }
}

const processor = new MyDataProcessor();
processor.process();

위 코드에서 DataProcessor는 추상 클래스로, process 메서드가 알고리즘의 뼈대를 정의하고 각 단계는 서브 클래스에서 구현할 수 있도록 추상 메서드로 선언됩니다. MyDataProcessorDataProcessor를 상속받아 각 단계를 구현합니다.

결론

추상 클래스를 활용한 템플릿 메서드 패턴을 사용하면 공통적인 알고리즘의 뼈대를 정의하고 각 단계를 서브 클래스에서 구현함으로써 유연하고 재사용 가능한 코드를 작성할 수 있습니다. 이는 소프트웨어 유지보수성과 확장성을 증가시키는 데 도움이 됩니다.

참고 자료: