设计模式的概念
设计模式(design)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案
这个术语是由四人帮在1990年代从建筑设计领域引入到计算机科学的。
为什么要学习设计模式
graph LR; a[开发任务]-- 一周开发一个版本 -->b[实现功能]
第一个,设计模式可以让你的程序体现出更好的代码重用性、可靠性、可维护性、可以让程序体现出高内聚、低耦合的特性。
- 代码重用性:即相同功能的代码,一次编写,多次使用
- 可读性:即编码的规范性
- 可扩展性:即可维护性,当需要增加新功能的时候,成本非常第,课扩展性就非常高
高内聚&低耦合
- 内聚:主要描述的是模块内部
- 耦合:主要描述的是模块内部之间的关系
- 高内聚:一个功能模块内部的元素,关联性非常强
- 低耦合:模块之间的耦合性非常低
第二个,掌握了设计模式,看一些源码会非常清晰。
第三个,设计模式也是系统合理重构的指南针。
graph LR; a[不改变原来软件的功能]-- 通过调整程序代码 -->b[趋于合理]
设计模式原则
何为设计模式的原则?
- 程序员在编程时,应当遵守的准则
- 设计模式的基础、依据
- 不是孤立存在的相互依赖的、相互补充的,每一种都很重要
名称 | 设计原则简介 |
---|---|
单一职责原则 | 类的职责要单一,不能将太多的职责放到一个类中 |
开闭原则 | 软件实体对扩展是开放的,但对修改是关闭的,即在不修改一个软件实体的基础上去扩展其功能 |
里氏代换原则 | 在软件系统中,一个可以接受基类对象的地方必然可以接受一个子类对象 |
依赖倒置原则 | 要针对抽象层编程,二不要针对具体类编程 |
接口隔离原则 | 使用多个专门的接口来取代一个统一的接口 |
合成复用原则 | 在系统中应该尽量多使用组合和聚合关联关系,尽量少使用甚至不使用继承关系 |
迪米特法则 | 一个软件实体对其他实体的引用越少越好,或者说如果两个类不必彼此之间通信,那么这两个类就不应当发生直接的互相作用,而是通过引入一个第三者发生间接交互 |