C++设计模式03 —— 策略模式

发布时间 2024-01-09 20:33:53作者: Torch_HXM

策略模式

  • 当面对大量相似的具有不同实现逻辑的业务,为了使代码具有很好的复用性,我们使用策略模式。

  • 我们以税法为例,多国的税法具有相似的功能,但是具体的计算方式差别很大。为了能快速地扩展其他国家的税法代码,满足设计模式要求,我们先创建一个纯虚的税法基类,里面包含了税法功能的纯虚函数。而后,不同国家的税法类继承自税法基类,并实现税法功能。最后,由工厂类接受税法类,并实现税法的计算。

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();
                }
};