设计模式


设计模式

1. 研究方式

  1. 提出目标: 为了使软件具有更高的可维护性、可读性、可重用性,实现高内聚、低耦合的目标
  2. 评判标准: 设计模式的七大原则
  3. 解决方案: 在实践过程中,不断总结和完善,之后形成固定的模式,并推广使用之

2. 学习方法

根据现实生活中的开发样例所具备的问题,进行改造,改造之后进行总结。

需要了解相关的Java使用方式。最主要是:上转型与下转型

3. 设计模式的原则

  • 单一职责原则
    • 定义: 在类级别上,一个类应该只负责一项职责,即对类要进行拆分
  • 接口隔离原则
    • 定义: 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。
  • 依赖倒转
    • 定义: 抽象不应该依赖于细节,细节应该依赖于抽象。
    • 依赖传递的三种方法:
      • 接口传递
      • 构造方法传递
      • setter方法传递
  • 里氏替换原则
    • 定义: 所有能使用父类型对象的地方,必须能透明的使用其子类型对象。即子类型不能重写父类型的方法,可以使用组合、聚合或使用更抽象的基类。
  • 开闭原则
    • 定义: 对扩展开放,对修改关闭。用抽象构建框架,用实现扩展细节。当一个软件发生变化时,尽量针对原有功能进行扩展,而不是对原有功能进行修改。对提供方开放扩展,对使用方关闭修改。
  • 迪米特原则
    • 定义: 一个类对其依赖的类的实现细节应该知道的越少越好。实际操作: 多使用成员变量、方法参数、方法返回值的方式,少使用局部变量的方式。
  • 合成复用原则
    • 定义: 软件过程时尽量使用合成/聚合的方式,而不是使用继承。依赖、组合、聚合的相关实现方式。
    • 现有一A类,B类对A类进行操作:
      • 依赖: B类中有一方法,A是此方法的参数;
      • 聚合: A是B的成员变量,并且B中有A的setter方法;
      • 组合: A是B的成员变量,并且A是直接new出来的;
  • 七大原则的核心思想
    • 尽可能找出软件中可能产生变化的部分,并把他们独立出来;
    • 针对接口编程而不是针对实现编程;
    • 为了交互对象的松耦合的设计而努力;

4. 类与类之间的关系

  • 依赖关系: 一个类中用到了另外一个类,如果另一个类不存在,编译都无法通过;
  • 关联关系: 属于依赖关系的特例,具有导向性和多重性,能指明类与类之间的对应关系的数量;
  • 泛化关系: 继承关系,子类继承父类;
  • 实现关系: 类实现接口;
  • 组合关系: 整体与部分的关系,部分可以脱离整体存在;
  • 聚合关系: 整体与部分的关系,部分不能脱离整体存在;