パターン比較レビュー
パターン | 適用条件 | 強み | 注意点 | よく使うシーン |
---|
Observer | 通知対象が変化する | 疎結合・拡張性が高い | 順序制御や依存確認がしにくい | イベント、UI 更新、Webhook 通知 |
Mediator | 複数オブジェクトが関係する | 全体制御がしやすい | Mediator に責務が集中しがち | UI コンポーネント間、複雑な業務連携 |
DI | テストや差し替えが重要 | 柔軟性・テスト性 ◎ | 設定やライフサイクルの管理が必要 | サービス層、外部依存の注入、DI コンテナ構成 |
まとめと選び方の指針
- 単純な通知の拡張性を高めたい →
Observer
- 複数サービスのやりとりを 1 箇所に集約したい →
Mediator
- 差し替えやテストのために疎結合にしたい →
Dependency Injection (DI)
実際の設計会話での使い分けヒント
- この OrderService、通知のたびにサービス呼び出してて重くなってる。
Observer
で分けませんか?
- いろんなサービスが絡むから、
Mediator
にして中央から制御したほうが見通し良くなるかも
- 今後このサービスをモックに差し替えてテストしたいし、
DI
にしといたほうが良さそうですね