策略模式
#include<iostream>
using namespace std;
class BaseStategy
{
public:
BaseStategy() {};
virtual ~BaseStategy() {};
virtual double calculate(double money) = 0;
};
class ChianTax :public BaseStategy
{
public:
virtual double calculate(double money)override
{
return money * 6;
}
private:
};
class USATax :public BaseStategy
{
public:
virtual double calculate(double money)override
{
return money * 2;
}
private:
};
class SaleOrder
{
private:
BaseStategy* BS;
public:
SaleOrder(BaseStategy* s)
{
this->BS = s;
}
double calculate(double money)
{
return this->BS->calculate(money);
}
};
int main()
{
BaseStategy* bs = new ChianTax;
SaleOrder chinatax(bs);
cout << chinatax.calculate(10) << endl;
BaseStategy* bs1 = new USATax;
SaleOrder usatax(bs1);
cout << usatax.calculate(10) << endl;
system("pause");
return 0;
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3af784c390e22da5a059d7c067be0dc1.png)