実装例
// 生成のロジックを一箇所に集約する
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を作りビジネスロジックを作るとかに考え方は似ている気がする。