美文网首页设计模式
策略模式--多用组合,少用继承,动态改变策略

策略模式--多用组合,少用继承,动态改变策略

作者: 柿籽 | 来源:发表于2018-01-25 23:17 被阅读0次

基本模式

基本模式

利用继承来扩展飞行技能
  当涉及"维护"时,为了"复用" (revse)目的而使用继承,结局并不怎么完美,会导致不应该具备某项能力的的类具备某项能力,比如会飞的橡皮鸭子。此时需要添加子类时必须根据子类的特性覆盖掉从基本超类继承来的飞行方法或者咕咕叫方法。
利用接口来扩展飞行技能

接口扩展

新的问题:代码复用性变差,需要统一修改飞行行为很不方便

设计原则:找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起

实现:把会变化的部分去除并封装起来,好让其他部分不会受到影响。
结果:代码变化引起的不经意后果变少,系统变得更有弹性。
分开变化和不会变化的部分,即分开属性和行为,鸭子类不需要知道行为的实现细节。

设计原则:针对接口编程,而不是针对实现类编程

"针对接口编程"真正的意思是"针对超类型(supertype)编程",利用多态,程序可以针对超类型编程,执行时会根据实际情况执行到真正的行为,不会绑死在超类型的行为上。


我们可以通过set方法改变成员属性接口的值来动态改变类的行为。

设计原则:多用组合,少用继承。

完成模式图

总结:类设计时我们常将常变化的与不常变化的分离开(如属性与行为),面向接口编程(成员属性接口实现多态)而不是面向实现类编程,方便根据不同类设置不同的行为;多用组合,少用继承,减少多余技能问题,慎用接口以提高代码复用性。

基本概念

  策略模式定义了算法族,分别封装起来,让他们之间可以相互替换。此模式让算法的变化独立于使用算法的用户。

详细说明:定义算法族接口,不同的算法实现类,超类中设定算法族成员属性接口,添加方法调用算法族接口方法,通过set方法可以动态的修改行为。

相关文章

  • 策略模式--多用组合,少用继承,动态改变策略

    基本模式 利用继承来扩展飞行技能当涉及"维护"时,为了"复用" (revse)目的而使用继承,结局并不怎么完美,会...

  • 策略模式

    一、策略模式概述 在策略模式中使用的一些面向对象(OO)原则:封装变化,多用组合,少用继承;针对接口编程,不针对实...

  • 设计模式——策略模式

    OO原则: 封装变化 多用组合,少用继承 针对接口编程,不针对实现编程 OO模式策略模式:定义算法族,分别封装起来...

  • HeadFirst设计模式-策略模式

    设计原则:1) 封装变化的部分 2) 针对接口编程,而不是针对实现变成 3)多用组合,少用继承 设计模式: 策略模...

  • 策略模式

    策略模式:定义算法族,封装起来,让算法独立于使用算法的类。 原则: 封装变化; 多用组合,少用继承; 针对接口编程...

  • java设计模式-装饰者模式

    模式定义 动态的将新功能附加到对象上,在对象功能扩展方面,它比继承更有弹性。 设计原则 多用组合,少用继承 类应设...

  • 策略模式

    策略模式,多用组合,少用继承 将需要变化的部分隔离出来,不要与不需要变化的混在一起 eg:某一个行为(吃瓜),不同...

  • 【设计模式】设计模式入门

    设计原则: 多用组合,少用继承。使用组合建立系统具有很大弹性,不仅可将算法族封装成类,更可以“在运行时动态改变行为...

  • 多用组合少用继承

    不推荐使用继承 继承表示is-a的关系,用于代码复用。但是继承会增加代码的耦合,复杂的继承关系(层次过深,过于复杂...

  • 设计模式总结

    1、模式依赖基础与原则 1.1、基础 抽象,封装,多态,继承 1.2、原则 封装变化,多用组合、少用继承,针对接口...

网友评论

    本文标题:策略模式--多用组合,少用继承,动态改变策略

    本文链接:https://www.haomeiwen.com/subject/fyjbaxtx.html