脱離およびC ++のソースコードを達成するための23個のデザインパターン-GoFファインパターンの設計ソリューション:以下のソースコード
//Proxy.h
#pragma一度 クラス件名 { パブリック: 仮想〜件名(); 仮想 無効要求()= 0 ; 保護された: 件名(); }。 クラス ConcreateSubject:公共件名 { パブリック: 〜ConcreateSubject(); ConcreateSubject(); 無効要求(); 保護: プライベート: }; クラスプロキシ{ パブリック: プロキシ(); プロキシ(件名* サブ)。 〜プロキシ(); 無効要求(); 保護: プライベート: 件名 * _sub。 }。
//Proxy.cpp
#include " Proxy.h " の#include <入出力ストリーム> 件名::件名(){} テーマ::〜件名(){} ボイド件名::要求() { のstd :: COUT << " 件名要求" << STD ::てendl; } ConcreateSubject :: ConcreateSubject(){} ConcreateSubject ::〜ConcreateSubject(){} ボイドConcreateSubject ::要求() { のstd :: COUT << " ConcreateSubject要求" << はstd :: ENDL。 } プロキシ::プロキシ(){} プロキシ::プロキシ(被写体 *サブ) { _sub = 副。 } ボイドプロキシ::要求() { のstd :: COUT << " 代理プロキシ要求" << はstd :: ENDL。 _sub - > 要求(); } プロキシ::〜プロキシ() { 削除_sub。 }
//main.cpp
#include " Proxy.h " の#include <入出力ストリーム> int型のmain(int型の引数、文字 * ARGV) { テーマ *副= 新しいConcreateSubject()。 プロキシ * P = 新しいプロキシ(サブ)。 P - > リクエスト(); リターン0 ; }