設計モード(六)戦略モードStrategy
914 ワード
意図:一連のアルゴリズムを定義し、それらを一つ一つカプセル化し、互いに置き換えることができるようにします.アルゴリズムを使用するお客様とは独立させることができます.
従来のC++メソッドの実装:
出力:
StrategyA::doAlgorithm()StrategyB::doAlgorithm()任意のキーを押して続行してください.現代C++実現、std::functionを参照
従来のC++メソッドの実装:
#include
#include
using namespace std;
class Strategy
{
public:
virtual void doAlgorithm(void)=0;
virtual ~Strategy(){}
protected:
};
class StrategyA : public Strategy
{
public:
void doAlgorithm(void){cout< ps):ps_(ps){}
void useAlgorithm(void)
{
shared_ptr ps = this->ps_.lock();
ps->doAlgorithm();
}
private:
weak_ptr ps_;
};
int main(int, char *[])
{
shared_ptr ps = make_shared();
UseStrategy user(ps);
user.useAlgorithm();
//
ps = make_shared();
UseStrategy user1(ps);
user1.useAlgorithm();
};
出力:
StrategyA::doAlgorithm()StrategyB::doAlgorithm()任意のキーを押して続行してください.現代C++実現、std::functionを参照