ライブラリ、フレームワーク、またはその他の複雑なクラスのセットへの簡略化されたインターフェイスを提供する構造設計パターン
- サブシステムの複雑さからコードを分離できる
- アプリのすべてのクラスに結合された神オブジェクトになることになる
- facadeは既存のオブジェクトの新しいインターフェイスを定義。Adapterは既存のインターフェイスを使用可能にする
- AbstractFactoryはサブシステムオブジェクトの作成方法をクライアントコードから隠したい場合のみ、Facadeの代替になる
- Flyweightは多くの小さなオブジェクトを作成。Facadeはサブシステム全体を表す単一のオブジェクトを作成
- FacadeとMediatorは似てる
- 1つのFacadeクラスで十分なので、実質シングルトン
- Facadeは複雑なエンティティをバッファリングし、それ自体で初期化するという点でプロキシに似ている
-
クレジットカードを使ってピザを注文
- アカウントの確認
- セキュリティPINを確認
- クレジット/デビットカードの残高
- 元帳エントリ作成
- 通知を送信
-
こんな複雑なシステムでは、迷子になりやすいし、破壊しやすい
-
のでfacade
-
クライアントが単純なインターフェイスを使用して数十のコンポーネントを操作できるようにする
- クライアントは、カードの詳細、セキュリティピン、支払い金額、および操作の種類を入力するだけで済む