文章目录
设计模式初识
什么是设计模式
模式
模式:在一定环境中解决一些问题的方案(通俗点就是: 特定环境用固定的套路解决问题)
设计模式
设计模式是一套反复被人使用,多数人知晓的,经过分类编目的代码设计经验的总结
设计模式最终的目的为了应对变化,提高代码的复用和重用性
-
客户需求的变化
-
技术平台变化
-
开发团队的变化
-
市场环境的变化
...
设计模式分类
-
创建型模式
通常和对象创建有关,设计到对象实例化的方式(5种)
- 工厂模式
- 抽象工厂模式
- 建造者模式
- 原型模式
- 单例模式
-
结构型模式
描述的是如何组合类和对象获得更大的结构(7种)
- 代理模式
- 装饰者模式
- 适配器模式
- 桥接模式
- 组合模式
- 外观模式
- 享元模式
-
行为型模式
描述的类和对象的交互以及分配职责(11种 )
- 模板方法模式
- 命令模式
- 责任链模式
- 策略模式
- 中介者模式
- 观察者模式
- 备忘录模式
- 访问者模式
- 状态模式
- 解释器模式
- 迭代器模式
面向对象的设计原则
依赖倒置原则(DIP)
DIP:Dependence Inversion Principle
- 高层(稳定)不依赖低层(变化),两者依赖抽象(稳定)。
- 抽象(稳定)不依赖细节(变化),细节依赖抽象(稳定)。
开放封闭原则(OCP)
OCP:Open For Extension, Closed For Modification Principle
-
对扩展开放,对更改封闭
-
类模块可扩展, 但不可修改
单一职责原则(SRP)
SRP:Single Responsibility Principle
- 一个类应该仅有一个引起它变化的原因
- 变化的方向隐含类的责任
里氏替换原则(LSP)
LSP:Liskov Substitution Principle
- 子类必须能够替换它们的基类
- 继承表达类型抽象
接口隔离原则(ISP)
- 不应该强迫客户程序依赖他们不用的方法
- 接口应该小而完备
- 一个接口应该只提供一种对外功能
优先组合不是继承原则(CARP)
CARP:Composite/Aggregate Reuse Principle
- 类的继承通常是"白箱复用",对象组合通常是"黑箱复用"
- 继承在一定程序破坏封装性,子类和父类耦合度高
迪米特法则(LOD)
LOD:Law of Demeter
- 对象应当对其他对象尽可能少的了解
- 各个模块之间相互调用时,通常会提供一个统一的接口来实现