コマンド・クラスに対する要求をカプセル化-commandデザインパターン(行動パターン)、レシーバ・オブジェクトが方法を提供することで、コマンドは、実行することによって活性化されます。

//方法

//Reciever.h

#pragma一度クラスレシーバ{
 パブリック
    レシーバ(); レシーバ();
    のアクション();
保護プライベート
};


    

//Reciever.cpp

#include " Reciever.h " 
の#include <iostreamの> 

レシーバ::レシーバ(){} 

レシーバ::レシーバ(){}
 のボイドレシーバ::アクション()
{ 
    のstd :: coutの << " レシーバのアクション... " << はstd ::てendl; 
}

//Command.h

#pragma一度クラスレシーバ。クラスコマンド{
 パブリック仮想コマンド();
    仮想無効実行()= 0 ;
保護された
    コマンド(); プライベート
}; クラス ConcreateCommand:パブリックコマンド
{ パブリック
    ConcreateCommand(レシーバ * REC);
    ConcreateCommand();
    無効実行();
保護プライベート
    レシーバ *



 



_rec; 
}。

//Command.cpp

#include " Command.h " 
の#include " Reciever.h " 
の#include <iostreamの> 

コマンド::コマンド(){} 
コマンド::コマンド(){}
 無効コマンド::(){}を実行


ConcreateCommandを:: ConcreateCommand(レシーバ * REC)
{ 
    _rec = REC。
} 
ConcreateCommand ::ConcreateCommand()
{ 
    削除 これを - > _rec。
} 
ボイドConcreateCommand ::)(実行
{ 
    _rec - > アクション(); 
    std :: coutの<< " ConcreateCommand ... " << はstd ::てendl; 
}

//Invoker.h

クラスコマンド;
クラスの発動
{ 
パブリック
    実行者(コマンド * CMD)。
    の発動();
    を呼び出し();
保護プライベート
    コマンド *が_CMD。
}。

//Invoker.cpp

#include " Command.h " 
の#include " Invoker.h " 
の#include <入出力ストリーム> 

インボーカ::インボーカ(コマンド * CMD)
{ 
    _CMD = CMD。
} 
インボーカ::インボーカ()
{ 
    削除_CMD。
} 
ボイドインボーカ::呼び出し()
{ 
    _CMD - > 実行(); 
}

//main.cpp

#include " Command.h " 
の#include " Invoker.h " 
の#include " Reciever.h " 
の#include <iostreamの> 
する#include < ストリング > int型のmain(int型の引数、文字 * ARGV)
{ 
    レシーバ * REC = 新しいレシーバ() ; 
    コマンド * CMD = 新しいConcreateCommand(REC); 
    実行者 * INV = 新しい呼び出し元(CMD); 
    INV - > 呼び出し(); 
    getchar(); リターン0


     ; 
}

おすすめ

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