操作の開始と終了に着目し、関連の一連の動作を介して、クラスの最終的なクラスを実現するための設計パターン-Facade(構造モデル)。

脱離およびC ++のソースコードを達成するための23個のデザインパターン-GoFファインパターンの設計ソリューション:以下のソースコード

//Facade.h

#pragma一度
 クラスSubsystem1
{
公共
    Subsystem1();
    仮想Subsystem1();
    無効操作();
保護プライベート
}。

クラスサブシステム2
{
公共
    サブシステム2();
    仮想サブシステム2();
    無効操作();
}。

クラスファサード{
 パブリック
    ファサード();
    仮想ファサード();
    OperationWrapper();
保護プライベート
    Subsystem1 * _s1。
    サブシステム2 * _s2。
}。

//Facade.cpp

#include " Facade.h " 
の#include <iostreamの>
Subsystem1 :: Subsystem1(){}
Subsystem1 ::Subsystem1(){}
 無効Subsystem1 ::操作()
{
    std :: coutの << " サブシステムの操作I " << はstd ::てendl;
}

サブシステム2 ::サブシステム2(){}
サブシステム2 ::サブシステム2(){}
 無効サブシステム2 ::操作()
{
    std :: coutの << " サブシステムの操作II " << はstd ::てendl;
}
ファサード::ファサード()
{
    この - > _ S1 = 新しいSubsystem1();
    この - > _ S2 = 新しいサブシステム2();
}
ファサード::ファサード()
{
    削除_s1;
    削除_s2;
}
ファサード:: OperationWrapper()
{
    この - > _ S1-> オペレーション();
    この - > _ S2-> オペレーション();
}

//main.cpp

#include " Facade.h "

int型のmain(int型の引数、文字 * ARGV)
{
    ファサード * FAC = 新しいファサード();
    FAC - > OperationWrapper();
    リターン 0 ;
}

おすすめ

転載: www.cnblogs.com/fourmi/p/12078151.html