Open2

【デザインパターン】TemplateMethod パターンについて📝

まさぴょん🐱まさぴょん🐱

TypeScriptでTemplateMethod パターン📝

abstract class AbstractEventCloneLogic {
  run(data: any) {
    this.preProcess();
    this.process(data); // 抽象メソッド(差分)
    this.postProcess();
  }

  private preProcess() {
    console.log('前処理(共通)');
  }

  protected abstract process(data: any): void; // 差し替える部分

  private postProcess() {
    console.log('後処理(共通)');
  }
}

class EventNormalCloneLogic extends AbstractEventCloneLogic {
  protected process(data: any) {
    console.log('Template A', data);
  }
}

class EventWebinarCloneLogic extends AbstractEventCloneLogic {
  protected process(data: any) {
    console.log('Template B', data);
  }
}

// 処理の流れは共通で、部分的に差し替える
const template = new EventWebinarCloneLogic();
template.run('data');
// 前処理 → EventWebinarCloneLogic → 後処理