脱離および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 ; }