zoukankan      html  css  js  c++  java
  • Java 设计模式学习笔记1——策略模式(Duck例子)

    微信截图_20170725222630

    0、假设现有工程(Duck)中遇到为类添加功能的问题,如何设计类添加新的功能?

    1、利用继承提供的Duck(鸭子)的行为会导致哪些缺点?

    (1)代码在多个子类中重复

    (2)很多男知道所有鸭子的全部行为

    (3)运行时的行为不容易改变

    (4)改变会牵一发动全身,造成其他鸭子的不想要的改变

    【设计原则】

    找出应用中可能需要变化之处,把它们独立出来,不要和那些不需呀变化的代码混在一起

    2、分开变化与不会变化的部分

    将Duck分成两部分,鸭子类和鸭子行为。

    类的固有属性和共用的方法写在类中,行为另起一个类(这里说的类也可能是接口)

    3、设计行为

    鸭子类实现类中实现设计接口的方法,这样就可以在运行时动态第加载行为方法。

    【设计原则】

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

    “针对接口编程”,关键就是利用多态编程。通过多态编程,子类实例化的动作不在需要在代码中硬编码,而是在运行时才指定具体的思想对象。

    4、整合鸭子行为

    image

    image

    image

    5、封装行为大局观,如下图:

    微信图片_20170725225214

    【设计原则】

    多用组合,少用继承。

  • 相关阅读:
    hdu 1325 判断有向图是否为树
    poj 1182
    Ubuntu 系统 文件操作命令
    vim 快捷键大全
    Git 上传本地命令
    git错误:fatal: Not a git repository (or any of the parent directories): .git
    Git 如何回到过去,然后 再 回到将来
    Git 提供篇
    Linux 的cp命令
    Linux :: vi E212: Can't open file for writing
  • 原文地址:https://www.cnblogs.com/ouyxy/p/7236999.html
Copyright © 2011-2022 走看看