介绍
设计模式是前人根据经验总结出来的,设计模式不仅仅只是一种规范,更多的是一种设计思路和经验总结。
掌握好设计模式的目的只有一个:提高你高质量编码的能力,使用好设计模式就相当于是站在了前人的肩膀上。
在JDK的源码里,以及框架中间件的源码实现里,到处都是设计模式。
一、设计模式的作用
设计模式的目标:提升代码重用性、可读性、可扩展性、可靠性,还能降低系统中类与类之间的耦合度,使程序呈现高内聚低耦合的特性。
设计模式的作用,主要有以下4点:
1.代码重用性
相同功能的代码不用多次编写。
2.可读性
设计模式使程序易读,编程规范性,方便其他程序员的阅读和理解。
3.可扩展性
设计模式能使编写的程序具有良好的可扩展性,满足系统设计的开闭原则。比如策略模式,就是将不同的算法封装在子类中,在需要添加新的算法时,只需添加新的子类,实现规定的接口,即可在不改变现有系统源码的情况下加入新的系统行为。
4.可靠性
当我们增加新的功能后,对原来的功能没有影响。
二、设计模式常用7大原则
1.单一职责原则
对于类来说,一个类应该只负责一项职责。
2.接口隔离原则
避免其实现类污染。
3.依赖倒转(倒置)原则
1)高层模块不应该依赖底层模块,二者都应该依赖其抽象。
2)抽象不应该依赖细节,细节应该依赖抽象。
3)依赖关系传递的3中方式
- 接口传递
- 构造方法传递
- setter方法传递
4.里氏替换原则
子类尽量不要重写父类的方法。
5.开闭原则
修改关闭,扩展开发。
6.迪米特法则
一个对象应该对其他对象保持最少的了解。
又叫最少知道原则,就是一个类对自己依赖的类知道越少越好。
7.合成复用原则
尽量使用组合/聚合,不要用继承。
三、23种设计模式的分类
1、创建型模式
用来描述 “如何创建对象”,它的主要特点是: 将对象的创建和使用分离。
2、结构型模式
用来描述如何将类或对象按照某种布局组成更大的结构。
3、行为型模式
用来识别对象之间的常用交流模式以及如何分配职责。
四、5种创建型模式
- 工厂方法模式
- 抽象工厂模式
- 单例模式
- 建造者模式
- 原型模式。
五、7种结构型模式
- 适配器模式
- 装饰器模式
- 代理模式
- 外观模式
- 桥接模式
- 组合模式
- 享元模式
六、11种行为型模式
- 策略模式
- 模板方法模式
- 观察者模式
- 迭代子模式
- 责任链模式
- 命令模式
- 备忘录模式
- 状态模式
- 访问者模式
- 中介者模式
- 解释器模式。