メインコンテンツまでスキップ

まとめ

パターン比較レビュー

パターン適用条件強み注意点よく使うシーン
Template Method処理の流れは共通・一部だけ差分あり型の統一・共通化しやすい継承に依存しがち保存処理、バッチなど
Strategy処理の切り替えが主目的柔軟性・テスト性 ◎実装数が増えがち通知・演算ロジック
Bridge拡張軸が複数ある抽象・実装の独立が可能設計が複雑化しやすいUI× 出力方式など
Flyweight似た構造・状態の重複がある軽量化、メモリ節約状態を外部管理する必要ありアイコン、座席、文字など
Prototypeテンプレートを元に差分だけ変えたい再利用・複製が容易複製時の副作用に注意UI、通知、設定など

まとめと選び方の指針

  • 差分だけの実装にしたい → Template Method
  • 処理の切り替えを柔軟にしたい → Strategy
  • 拡張軸が複数ある → Bridge
  • 同じ構造の繰り返しを軽量にしたい → Flyweight
  • テンプレートの構造をベースに差分で使いたい → Prototype

実際の設計会話での使い分けヒント

  • この共通処理に混ざってる '差分' は、Template Method でフック化できそうですね
  • この処理、Template Method にすれば差分だけ実装できますよ
  • 振る舞いを柔軟に切り替えたいなら、Strategy にするのがいいかも
  • 可変処理を Strategy に切り出せば、動的に切り替え可能ですね
  • これは通知方法と内容がそれぞれに変わるから、Bridge で軸を分けて設計しましょう
  • 構造が 2 軸で分かれてるなら、Bridge で分離すると見通しがよくなります
  • 同じアイコンをいくつも生成してるなら Flyweight で共有できます
  • この通知構造、Prototype で clone して使い回すといいかもしれません