什么是设计模式?
设计模式:描述软件设计过程中某一类常见问题的一般性的解决方案
设计模式是用来表现内部组件是如何被组装的,以及每一个组件是如何通过相互关联来构成一个庞大系统的。
设计模式的目标
- 正确性
- 健壮性
- 灵活性
- 可重用性
- 高效性
面向对象的三大特征
- 继承性
- 封装性
- 多态性
设计模式六大原则
1.单一原则(Single Responsibility Principle)
- 定义:一个类或者一个方法只负责一项职责,尽量做到类的只有一个行为原因引起变化;
- 特点:高内聚、低耦合
2.里氏替换原则(LSP liskov substitution principle) - 定义:子类可以扩展父类的功能,但不能改变原有父类的功能;(本质就是多态)
- 特点:一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立
3.依赖倒置原则(dependence inversion principle) - 定义:抽象不应该依赖于细节,细节应当依赖于抽象,要针对接口编程,而不是针对实现编程。
- 抽象就是接口或者抽象类,细节就是实现类
- 上层模块不应该依赖下层模块,两者应依赖其抽象;
- 抽象不应该依赖细节,细节应该依赖抽象;
- 通俗点就是说变量或者传参数,尽量使用抽象类,或者接口;
- 【接口负责定义public属性和方法,并且申明与其他对象依赖关系,抽象类负责公共构造部分的实现,实现类准确的实现业务逻辑】
4.接口隔离(interface segregation principle) - 定义:使用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口
- 类之间依赖关系应该建立在最小的接口上
- 简单理解:复杂的接口,根据业务拆分成多个简单接口
- 【接口的设计粒度越小,系统越灵活,但是灵活的同时结构复杂性提高,开发难度也会变大,维护性降低】
5.迪米特原则(law of demeter LOD) - 定义:也称最少知道原则,一个软件实体应当尽可能少地与其他实体发生相互作用。
- 尽量降低类与类之间的耦合;
- 一个对象应该对其他对象有最少的了解
6.开闭原则(open closed principle) - 定义:一个类应当对扩展开放,对修改关闭,应尽量在不修改原有代码的情况下进行扩展。
- 特点:在拥有适应性和灵活性同时,具备较好的稳定性和延续性
- 抽象化是开闭原则的关键
设计模式列表
- 迭代器模式(Iterator模式)
- 适配器模式(Adapter模式)
- 模板模式(Template Method模式)
- 工厂方法模式(Factory Method模式)
- 单例模式(Singleton模式)
- 原型模式(Prototype模式)
- 建造模式(Builder模式)
- 抽象工厂模式(Adstract Factory模式)
- 桥接模式(Bridge模式)
- 策略模式(Strategy模式)
- 组合模式(Composite模式)
- 装饰模式(Decorator模式)
- 访问者模式(Visitor模式)
- 职责链模式(Chain Responsibility模式)
- 外观模式(Facade模式)
- 中介者模式(Mediator模式)
- 观察者模式(Observer模式)
- 备忘录模式(Memento模式)
- 状态模式(State模式)
- 享元模式(Flyweight模式)
- 代理模式(Proxy模式)
- 命令模式(Command模式)
- 解释器模式(Interpreter模式)