zoukankan      html  css  js  c++  java
  • 策略模式 The Strategy pattern

    • 软件开发的一个不变真理是:change!
    • 库与框架无法帮助我们将应用组织成容易理解、容易维护、具有弹性的架构,所以需要设计模式

    策略模式

         定义了算法族,分别封装起来(封装在一组类中,可以被轻易的扩充与改变),让它们之间可以相互替换。

    此模式让算法的改变独立于使用算法的客户。

    设计原则

    1、“封装变化”。找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码放在一起。

    2、针对接口编程,而不是针对实现编程。

    3、对用组合,少用继承。

    (组合是运行时动态调用,可以在运行时动态改变行为,因为我们可以更换不同的实现。

    继承是编译时静态决定了的)

    组 合 、继 承 对比

    1、组合(优点):不破坏封装,整体类与局部类之间松耦合,彼此相对独立

          继承(缺点):破坏封装,子类与父类之间紧密耦合,子类依赖于父类的实现,子类缺乏独立性

    2、组合(优点):具有较好的可扩展性

          继承(缺点):支持扩展,但是往往以增加系统结构的复杂度为代价

    3、组合(优点):支持动态组合。在运行时,整体对象可以选择不同类型的局部对象

          继承(缺点):不支持动态继承。在运行时,子类无法选择不同的父类

    4、组合(优点):整体类可以对局部类进行包装,封装局部类的接口,提供新的接口

          继承(缺点):子类不能改变父类的接口

    5、组合(缺点):整体类不能自动获得和局部类同样的接口

          继承(优点):子类能自动继承父类的接口

    6、组合(缺点):创建整体类的对象时,需要创建所有局部类的对象

          继承(优点):创建子类的对象时,无须创建父类的对象

    类图

    以《Head First Design Patterns》中鸭子为例。

    (转载请注明出处 ^.^)

  • 相关阅读:
    第五周活动进度表
    第四周学习进度条
    软件工程概论作业3
    第三周活动进度
    小学生运算程序2
    课堂作业1
    jsp登陆界面代码
    《构建之法》读书笔记04
    《构建之法》读书笔记03
    《构建之法》读书笔记02
  • 原文地址:https://www.cnblogs.com/windlaughing/p/2989136.html
Copyright © 2011-2022 走看看