パターン比較レビュー
パターン | 適用条件 | 強み | 注意点 | よく使うシーン |
---|
Adapter | 既存のインターフェースが使えないとき | 呼び出し側は統一された API を使える | 変換が複雑になると Adapter が肥大化 | 外部 API、ライブラリ置換、互換処理 |
Facade | 複雑な内部処理を隠したいとき | API の簡素化、複数呼び出しの統合 | 機能をまとめる意図で構造が違う | UI 向け窓口、サブシステム統合 |
Proxy | アクセス制御やキャッシュを挟みたいとき | 処理の挿入が柔軟(遅延、ログ) | 本質的な変換はしない | キャッシュ、認証、ログトレースなど |
まとめと選び方の指針
- 外部仕様や古い実装と無理やり繋いでいるなら →
Adapter
- 複雑な API 呼び出しを単純化したいなら →
Facade
- 認証やキャッシュなど「処理を挟みたい」場合 →
Proxy
実際の設計会話での使い分けヒント
- この API、古いやつだけど使わざるを得ないなら
Adapter
挟みましょう
- 新しいインターフェースで統一して、後で切り替えられるようにしておくと安心です
- 呼び出し側で毎回
.printText()
とかしてると危ないですね、変換レイヤーを抽象化しましょう