策略模式
-
当面对大量相似的具有不同实现逻辑的业务,为了使代码具有很好的复用性,我们使用策略模式。
-
我们以税法为例,多国的税法具有相似的功能,但是具体的计算方式差别很大。为了能快速地扩展其他国家的税法代码,满足设计模式要求,我们先创建一个纯虚的税法基类,里面包含了税法功能的纯虚函数。而后,不同国家的税法类继承自税法基类,并实现税法功能。最后,由工厂类接受税法类,并实现税法的计算。
class basicTax{
public:
virtual double Calculate()=0;
virtual ~basicTax(){}
};
class CNTax:public basicTax{
public:
virtual double Calculate(){
// code
}
};
class USTax:public basicTax{
public:
virtual double Calculate(){
// code
}
};
class SalesOrder{
public:
basicTax* tax;
public:
SalesOrder(basicTax* basictax){
this->tax = basictax;
}
double CalculateTax(){
tax->Calculate();
}
};