ファクトリーパターン

実装例

// 生成のロジックを一箇所に集約する
function createNotification(type: string): Notification {
  if (type === 'email') return new EmailNotification();
  if (type === 'sms') return new SMSNotification();
  throw new Error('Unknown type');
}

メモ

  • インスタンスの生成を隠蔽する。つまり、引数に応じて違うクラスをnewしてインスタンスをreturnする。
  • controllerとmodelの間にserviceを作りビジネスロジックを作るとかに考え方は似ている気がする。