ファサード モード (ファサード): サブシステム内の一連のインターフェイスに一貫したインターフェイスを提供します。このモードは、このサブシステムを使いやすくする高レベルのインターフェイスを定義します。
2 つの主要な役割:
外観クラス ファサード: どのサブシステム クラスがリクエストの処理を担当しているかを把握し、顧客リクエストを適切なサブシステム オブジェクトにプロキシします。
サブシステム コレクション: サブシステムの機能を実装し、Facade オブジェクトによって割り当てられたタスクを処理します。注: サブクラスには Facade に関する情報がありません。つまり、Facade オブジェクトへの参照がありません。
この記事ではファンドの購入を例に挙げています。顧客はファンドを売買するだけでよく(ファサード)、ストック1、ストック2、ストック3などの操作(サブシステム)はファンド会社が行います。
テストケース:
[code]int main(){ Fund fund;//基金对象(Facade) fund.fundBuy();//stock1 buy stock2 buy stock3 buy fund.fundSell(); //stock1 sell stcok2 sell stock3 sell return 0; }
出現パターンの実装:
[code]//子系统不知道Facade的任何信息 //股票1号 class Stock1{ public: void sell(){ std::cout << "stock1 sell\n"; } void buy(){ std::cout << "stock1 buy\n"; } }; //股票2号 class Stock2{ public: void sell(){ std::cout << "stcok2 sell\n"; } void buy(){ std::cout << "stock2 buy\n"; } }; //股票3号 class Stock3{ public: void sell(){ std::cout << "stock3 sell\n"; } void buy(){ std::cout << "stock3 buy\n"; } }; //基金类是Facade class Fund{ public: Stock1 stock1; Stock2 stock2; Stock3 stock3; void fundSell(){ stock1.sell(); stock2.sell(); stock3.sell(); } void fundBuy(){ stock1.buy(); stock2.buy(); stock3.buy(); } };
出現パターンをいつ使用するか?
デザインの初期段階では、2 つの異なるレイヤーを意識的に分離する必要があります。
開発段階では、サブシステムは継続的な再構築と進化によりますます複雑になることがよくあります。
大規模なレガシー システムを保守する場合、元のシステムの非常に複雑なコードや設計が不十分なコードを使用して、比較的シンプルで明確なインターフェイスを使用して、新しいシステムが Facade オブジェクトと対話できるようにすることができます。
上記は、C++ のデザイン パターンと外観パターンの簡単な紹介の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。