ホームページ > バックエンド開発 > C#.Net チュートリアル > C++ の設計パターンと外観パターンの簡単な紹介

C++ の設計パターンと外観パターンの簡単な紹介

黄舟
リリース: 2017-01-18 14:52:47
オリジナル
1631 人が閲覧しました

ファサード モード (ファサード): サブシステム内の一連のインターフェイスに一貫したインターフェイスを提供します。このモードは、このサブシステムを使いやすくする高レベルのインターフェイスを定義します。

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) に注目してください。


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート