免責事項: この一連のブログの参考資料は、Cheng Jie 著の「Dahua Design Pattern」です。
ファサード モード (アピアランス モードとも呼ばれる) は、複数のサブシステムの複数の異なるインターフェイスにアクセスするための統合インターフェイスを提供することを指し、サブシステム内の一連のインターフェイスに統合された高レベル インターフェイスを提供します。サブシステムを使用すると使いやすくなります。
ケース:株取引、証券知識のない初心者投資家は株をやることで簡単に損をする可能性があるため、初心者は証券知識を理解しているファンド会社に株取引を任せた方が良いです。新規投資家はファンド会社に株式を預けて運用するため、どの銘柄の動向を把握することなく株式の売買を完了することができます。ここではファンド会社は単なる見せかけ、新規投資家にとっての見せかけにすぎない。
UML クラス図:
性格分析:
Facade (FacadeCompany) ロール: このロールは、高レベルのインターフェイスをカプセル化し、クライアント要求を適切なサブシステム オブジェクトにプロキシします。これは、ファサード パターンのコア インターフェイスです。
サブシステム (ICBC) ロール: サブシステムの特定の機能を実装し、FacadeCompany オブジェクトによって割り当てられたタスクを処理します。サブシステムには FacadeCompany に関する情報がなく、FacadeCompany オブジェクトへの参照もありません。
具体的なコード例:
リーリー
リーリー
1) サブシステム コンポーネントを顧客から保護できるため、顧客が処理するオブジェクトの数が減り、サブシステムがより使いやすくなります。
2) サブシステムと顧客の間の疎結合関係を実現しますが、サブシステム内の機能コンポーネントは多くの場合密結合です。疎結合関係により、サブシステムのコンポーネントの変更が顧客に影響を与えないようになります。ファサード パターンは、階層システムを確立するのに役立ち、オブジェクト間の依存関係を階層化するのにも役立ちます。
3) ファサード モードは、複雑な循環依存関係を排除できます。これは、クライアント プログラムとサブシステムが別々に実装されている場合に特に重要です。大規模なソフトウェア システムでは、コンパイルの依存関係を減らすことが重要です。サブシステム クラスが変更された場合、時間を節約するために再コンパイル作業を最小限に抑えたいと考えています。 Facade を使用すると、コンパイルの依存関係を減らし、重要なシステムの軽微な変更に必要な再コンパイル作業を制限できます。
4) ファサード モードは、通常、1 つのサブシステムをコンパイルするのに他のすべてのサブシステムをコンパイルする必要がないため、異なるプラットフォーム間でのシステムの移植プロセスを簡素化するのにも役立ちます。