Factory Method
通知チャネルを生成する
生成の知識を閉じ込める
このデモで分かること: 通知の「作り方」を一箇所に閉じ込める
このデモで Factory Method を使う理由
- 使う側が欲しいのは「通知する」ことであり、Email/Slack/Push の new の詳細ではない。
- 呼び出し側に具象クラス名が散らばると、チャネル追加のたびに修正箇所が増える。
- Factory に生成を閉じ込めれば、使う側は種別を渡すだけでよく、差し替えも一箇所で済む。
パターンなし vs このパターン(イメージ)
記事の本編ではなく、このデモ題材を if の山にした場合との対比です(疑似コード)。
パターンなし
// パターンなし(イメージ)
if ("slack".equals(ch)) {
return new SlackNotifier();
}
// 使う画面・サービスごとに同じ if がコピーされる
Factory Method あり
// Factory Notifier n = NotifierFactory.create(ch); n.send(message); // → 生成の知識は Factory だけ
デモ
結果
[Email] 送信: パターン学習を始めましょう
このデモで生成された実装クラス
EmailNotifier
NotifierFactory.create(...) がチャネルに応じた具象クラスを返します。
操作 → 動いたクラス / メソッド
- 操作: チャネル「email」で通知を生成して送信
- → NotifierFactory.create("email")
- → new EmailNotifier() … Factory が選んだ具象クラス
- → EmailNotifier.send(message)
このパターンの解説記事 ↗
記事は考え方・別サンプルの解説です。このページのデモ実装とはソースが異なります (クラス名・題材はデモ用に簡略化しています)。