Facade Pattern(またはfaçadeパターン)は、オブジェクト指向プログラミングでよく使われるソフトウェアデザインパターンである。
A facade は、クラス ライブラリのようなコードの大きなボディに簡略化されたインターフェイスを提供するオブジェクトです。 ファサードは以下のことが可能です。
Facade デザイン パターンは、システムが非常に複雑であったり、相互依存するクラスが多数あるために理解が困難な場合、またはそのソース コードが入手できない場合によく使用されます。 このパターンは、より大きなシステムの複雑さを隠し、よりシンプルなインターフェイスをクライアントに提供します。 通常、クライアントが必要とするメンバーセットを含む単一のラッパークラスが含まれます。 これらのメンバーはファサードクライアントに代わってシステムにアクセスし、実装の詳細を隠します。
用途
A Facade は、基本オブジェクトへの簡単または単純なインターフェイスが必要なときに使用されます。 あるいは、ラッパーが特定のインターフェイスを尊重し、ポリモーフィックな動作をサポートしなければならないときに、アダプターを使用することができます。 デコレータは、実行時にインタフェースの振る舞いを追加したり変更したりすることを可能にします。
Pattern | Intent |
---|---|
Adapter | あるインターフェースを別のインターフェースに変換して、クライアントが期待するものに一致させる |
Decorator | Dynamically added responsibility to the interface by wrapping original code |
Facade | Provides a simplified interface |
The facade パターンは通常、次のときに使用されます。
- 複雑なシステムにアクセスするために単純なインターフェイスが必要な場合、
- サブシステムの抽象化と実装が緊密に結合している場合、
- 階層化されたソフトウェアの各レベルへの入口点が必要な場合、
- システムが非常に複雑または理解困難な場合などです。
Structure
Facade (ファサード)。 ファサードクラスは、パッケージ1、2、3をアプリケーションの他の部分から抽象化します。クライアントは、パッケージ1、2、3を抽象化します。
例
これは、クライアント (「あなた」) が複雑なシステム (CPU やハードドライブなどの内部コンピューター部分) に対してファサード (「コンピューター」) とどのように相互作用するかの抽象的な例です。