设计模式
设计模式
1. 研究方式
- 提出目标: 为了使软件具有更高的可维护性、可读性、可重用性,实现高内聚、低耦合的目标
- 评判标准: 设计模式的七大原则
- 解决方案: 在实践过程中,不断总结和完善,之后形成固定的模式,并推广使用之
2. 学习方法
根据现实生活中的开发样例所具备的问题,进行改造,改造之后进行总结。
需要了解相关的Java使用方式。最主要是:上转型与下转型
。
3. 设计模式的原则
- 单一职责原则
- 定义: 在类级别上,一个类应该只负责一项职责,即对类要进行拆分
- 接口隔离原则
- 定义: 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。
- 依赖倒转
- 定义: 抽象不应该依赖于细节,细节应该依赖于抽象。
- 依赖传递的三种方法:
- 接口传递
- 构造方法传递
- setter方法传递
- 里氏替换原则
- 定义: 所有能使用父类型对象的地方,必须能透明的使用其子类型对象。即子类型不能重写父类型的方法,可以使用组合、聚合或使用更抽象的基类。
- 开闭原则
- 定义: 对扩展开放,对修改关闭。用抽象构建框架,用实现扩展细节。当一个软件发生变化时,尽量针对原有功能进行扩展,而不是对原有功能进行修改。对提供方开放扩展,对使用方关闭修改。
- 迪米特原则
- 定义: 一个类对其依赖的类的实现细节应该知道的越少越好。实际操作: 多使用成员变量、方法参数、方法返回值的方式,少使用局部变量的方式。
- 合成复用原则
- 定义: 软件过程时尽量使用合成/聚合的方式,而不是使用继承。依赖、组合、聚合的相关实现方式。
- 现有一A类,B类对A类进行操作:
- 依赖: B类中有一方法,A是此方法的参数;
- 聚合: A是B的成员变量,并且B中有A的setter方法;
- 组合: A是B的成员变量,并且A是直接new出来的;
- 七大原则的核心思想
- 尽可能找出软件中可能产生变化的部分,并把他们独立出来;
- 针对接口编程而不是针对实现编程;
- 为了交互对象的松耦合的设计而努力;
4. 类与类之间的关系
- 依赖关系: 一个类中用到了另外一个类,如果另一个类不存在,编译都无法通过;
- 关联关系: 属于依赖关系的特例,具有导向性和多重性,能指明类与类之间的对应关系的数量;
- 泛化关系: 继承关系,子类继承父类;
- 实现关系: 类实现接口;
- 组合关系: 整体与部分的关系,部分可以脱离整体存在;
- 聚合关系: 整体与部分的关系,部分不能脱离整体存在;