首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

策略模式(Strategy

策略模式(Strategy) 策略模式(Strategy)[Policy] 意图:定义一系列算法,把他们封装起来,并且使他们可以相互替换,使算法可以独立于使用它的客户而变化。...这里涉及Context类和Strategy交互的问题,Context需要Strategy提供的算法进行计算,那么源数据如何告知Strategy类就有两种方式:一种是通过参数传递,直接将数据传参到Strategy...的接口algorithmInteface即可,另一种是直接传递Strategy对象的指针,并提供公共的访问接口contextInterface来提供数据来源。...这里为了方便,我们使用简单的值传递示例,C++实现如下: class Strategy { public: virtual bool algorithmInterface(int x,int y)=0...; virtual ~Strategy(){} }; class UpStrategy:public Strategy { public: virtual bool algorithmInterface

48890

策略模式(strategy pattern)

会有溢出效应 为了改进1问题,我们可以通过覆盖fly 方法来解决 => 覆盖解决 问题又来了,如果我们有一个玩具鸭子ToyDuck, 这样就需要ToyDuck去覆盖Duck的所有实现的方法 策略模式(strategy...pattern) 基本概念 策略模式(Strategy Pattern)中,定义算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户 这算法体现了几个设计原则, 把变化的代码从不变的代码中分离出来...; 针对接口编程而不是具体类(定义了策略接口); 多用组合/聚合,少用继承(客户通过组合方式使用策略) 类图 说明 从上图可以看到,客户context 有成员变量strategy或者其他的策略接口,至于需要使用到哪个策略...对扩展开放”原则,客户端增加行为不用修改原有代码,只要添加一种策略(或者行为)即可,避免了使用多重转移语句(if..else if..else) 提供了可以替换继承关系的办法: 策略模式将算法封装在独立的Strategy

11230

精读《设计模式 - Strategy 策略模式》

Strategy(策略模式) Strategy(策略模式)属于行为型模式。 意图:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。本模式使得算法可以独立于使用它的客户而变化。...结构图 Strategy: 策略公共接口。 ConcreteStrategy: 具体策略,实现了上面这个接口。 只要你的策略符合接口,就满足策略模式的条件。...interface Strategy { doSomething: () => void } class Strategy1 implements Strategy { doSomething...: () => { console.log('实现方案1') } } class Strategy2 implements Strategy { doSomething: () =>...{ console.log('实现方案2') } } // 使用 new System(new Strategy1()) // 策略1实现的系统 new System(new Strategy2

23930
领券