-proxyデザインパターン(構造モデル)。

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

 

おすすめ

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