Intent
- サブシステム内の一連のインターフェイスに統一されたインターフェイスを提供すること。
Problem
A segment of the client community needs a simplified interface to the overall functionality of a complex subsystem.
Discussion
Facade は、単一インターフェース オブジェクト内に複雑なサブシステムをカプセル化することを論じます。 これにより、サブシステムをうまく活用するために必要な学習曲線が短縮されます。 また、潜在的に多くのクライアントからサブシステムを切り離すことを促進します。 一方、Facade がサブシステムの唯一のアクセス ポイントである場合、「パワー ユーザー」が必要とする可能性のある機能と柔軟性が制限されることになります。
Structure
Facade は「謎に包まれた謎」を取り、ソフトウェアの無定形で不可解な塊を飼いならすラッパーを挿入するものである。
SubsystemOne
と SubsystemThree
は SubsystemTwo
の内部コンポーネントと相互作用しない。彼らは SubsystemTwoWrapper
「ファサード」(つまり、より高いレベルの抽象化)を使用する。
Example
The Facade provides a unified, higher level interface to a subsystem that makes it easy to use. 消費者は、カタログから注文するときに Facade に遭遇します。 消費者は1つの番号に電話をかけ、顧客サービス担当者と話す。 顧客サービス担当者は Facade として機能し、注文処理部門、請求部門、および出荷部門へのインターフェイスを提供します。
チェックリスト
- サブシステムまたはコンポーネントの、より単純で統一されたインターフェイスを特定する。
- サブシステムをカプセル化する「ラッパー」クラスを設計する。
- ファサード/ラッパーは、コンポーネントの複雑さとコラボレーションを捕らえ、適切なメソッドに委ねる。
- クライアントはファサードだけを使う(に結合される)。
- Consider whether additional Facades would add value.
Rules of thumb
- Facade defines a new interface, while Adapter uses an old interface.Remember that Adapter makes two existing interfaces work together asopposed to defining a entirely new one.
- Facade は、まったく新しいインターフェースを定義するのに対して、新しいインターフェースを定義することです。
- Flyweight がたくさんの小さなオブジェクトを作成する方法を示すのに対し、Facade は単一のオブジェクトでサブシステム全体を表現する方法を示しています。 Mediator は、同僚オブジェクト間の任意の通信を抽象化/集中化します。 それは日常的に「付加価値」を与え、同僚オブジェクトによって知られ/参照される。
- Abstract Factory は、プラットフォーム固有のクラスを隠すために Facade の代替として使用することができます。 Facade の意図はよりシンプルなインターフェイスを生成することであり、Adapter の意図は既存のインターフェイスに設計することです。Facade は日常的に複数のオブジェクトをラップし、Adapter は単一のオブジェクトをラップしますが、Facade は単一の複雑なオブジェクトをフロントエンドにでき、Adapter は複数のレガシー オブジェクトをラップすることができます。 つまり、Adapter パターンと Facade パターンの違いを見分ける方法は、Adapter が 1 つのクラスをラップし、Facade が多くのクラスを表す可能性があるということですか?
回答 いいえ! Adapter パターンは、1 つまたは複数のクラスのインターフェイスをクライアントが期待する 1 つのインターフェイスに変更することを忘れないでください。 ほとんどの教科書の例では、1 つのクラスを適応させるアダプタを示しますが、クライアントがコード化されているインターフェイスを提供するために、多くのクラスを適応させる必要がある場合があります。 同様に、Facadeは非常に複雑なインターフェイスを持つ1つのクラスに対して、簡略化されたインターフェイスを提供することがあります。 この2つの違いは、彼らが “ラップ “する方法多くのクラスの間ではない、それは彼らの意図にある。
Support our free website and own the eBook!
- 22のデザインパターンと8つの原則を深く説明
- 406ページで構成され、読みやすく、専門用語を使わない
- 228 明確で役に立つイラストと図
- 4 言語でコード例を含むアーカイブ
- すべてのデバイスをサポートします。 EPUB/MOBI/PDF 形式
詳細はこちら…