strategy(策略模式)
策略模式主要應(yīng)對(duì)的問題:
- 業(yè)務(wù)算法多變
- 許多類僅僅是行為不同
- 多個(gè)條件判斷,并且條件個(gè)數(shù)有可能隨著業(yè)務(wù)增加
結(jié)構(gòu)圖:

strategy.png
代碼:
策略接口類:
- 對(duì)策略接口進(jìn)行定義
//策略接口
class strategyInterface
{
public:
virtual void dealWay()=0;
};
具體策略
- 對(duì)具體策略進(jìn)行實(shí)現(xiàn)
//具體策略的實(shí)現(xiàn)1
class strategyOne : public strategyInterface
{
public:
virtual void dealWay() {
cout<<"策略1"<<endl;
}
};
具體策略
- 對(duì)具體策略進(jìn)行實(shí)現(xiàn)
//具體策略的實(shí)現(xiàn)2
class strategyTwo : public strategyInterface
{
public:
virtual void dealWay() {
cout<<"策略2"<<endl;
}
};
//使用策略的對(duì)象,擁有一個(gè)多態(tài)的策略指針,調(diào)用不同的策略
//策略使用者
class useStrategy
{
protected:
strategyInterface* strategy;
public:
//此處使用工廠模式更加好
useStrategy(strategyInterface* _strategy):strategy(_strategy)
{
}
void test()
{
strategy->dealWay();
}
};
test
#include <iostream>
using namespace std;
int main(int argc, char const *argv[]) {
useStrategy* us = new useStrategy(new strategyOne());
us->test();
useStrategy* us1 = new useStrategy(new strategyTwo());
us1->test();
return 0;
}

測試.png