设计模式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这样的一个产品,而策略模型则将不同的运算看成不同的策略,有相同的输入输出格式,只是中间的算法不同而已,将不同的部分交由子类去实现

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 设计模式概述 在学习面向对象七大设计原则时需要注意以下几点:a) 高内聚、低耦合和单一职能的“冲突”实际上,这两者...
    彦帧阅读 9,148评论 0 14
  • 设计模式的目的是让代码易维护、易扩展,不能为了模式而模式,因此一个简单的工具脚本是不需要用到任何模式的。 策略模式...
    蓝色信仰阅读 6,963评论 1 3
  • 设计模式基本原则 开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。开-闭原...
    西山薄凉阅读 9,333评论 3 14
  • 参考资料:菜鸟教程之设计模式 设计模式概述 设计模式(Design pattern)代表了最佳的实践,通常被有经验...
    Steven1997阅读 4,900评论 1 12
  • 食品包装设计是品牌理念、产品特性、消费心理的综合反映,是建立产品与消费者亲和力的有力手段。食品包装设计在保证所包装...
    6fa2df96eb4d阅读 1,618评论 0 0