策略模式
策略模式
策略模式
什么是策略模式?
策略模式将可变的部分从程序中抽象分离成算法接口,在该接口下分别分装一系列算法实现,并使他们相互替换,从而导致客户端程序独立于算法的改变。
组合优于继成
什么是策略模式
策略模式适用场景
复合的定义
复合优先于继承
组合的定义
策略模式的使用场景
1、许多相关的类仅仅是行为行为差异
2、运行时选取不同的算法变体
3、通过条件语句在多个分支中选取其一(if(){}else{}.....)
策略模式缺点
1、客户代码需要了解每个策略实现的细节
2、增加了对象的数目
策略模式的有点
1、使用了组合,使架构更加灵活
2、富有弹性,可以较好的应对变化(开一闭原则)
3、更好的代码复用性(相对于继承)
4、消除大量的条件语句
1、将不变的行为分离出来抽象为一个接口,将具体的行为交由实现去完成
2、面向接口,而不是面向实现编程
3、多用组合,少用继承
在长期的开发当中如何稳定框架的不变,这就需要找到应用中需要变化的部分,把他们独立出来,不要和那些不需要变化的代码混在一起
只开发了一个Fly No Way算法就可以支持多个种类鸭子的实现
在类中增加一个私有域,引用另一个已有类的实例,通过调用引用实例的方法从而获得新的功能,这种设计称为组合(复用)
可变的部分=布局算法+支付算法
Composition
策略模式中的设计原则:
1、找到应用中需要变化的部分,把他们独立出来,不要和那些不需要变化的代码混在一起。
2、面向接口编程,而不是面向实现编程。
3、多用组合,少用继承
缺点:
优点:
组合的定义:
组合优于继承
定义:
什么是策略模式:
目录: