设计模式02: 策略模式

在简单工厂模式中,我们提到简单工厂模式中,客户端需要知道两个类OperationOperationFactory,其实可以运用策略模式将其封装起来:

class OperationContext
{
    private Operation oper = null;

    public OperationContext(double num1_, double num2_, string type)
    {
        switch (type)
        {
            case "+":
                oper = new OperationAdd();
                break;
            case "-":
                oper = new OperationSub();
                break;
            case "*":
                oper = new OperationMul();
                break;
            case "/":
                oper = new OperationDiv();
                break;
        }
        oper.Num1 = num1_;
        oper.Num2 = num2_;
    }

    public double GetResult()
    {
        return this.oper.GetResult();
    }
}

现在使用策略模式进行改进,运算时是这样的:

OperationContext ct = new OperationContext(num1, num2, strOper);
Console.WriteLine(Convert.ToString(ct.GetResult()));

只需要知道OperationContext即可。相比而言,简单工厂只是返回了Operation这样的一个产品,而策略模型则将不同的运算看成不同的策略,有相同的输入输出格式,只是中间的算法不同而已,将不同的部分交由子类去实现

你可能感兴趣的:(设计模式02: 策略模式)