前言
设计模式可能我们不了解,但是一些常用的单例模式、代理模式,一定都听说过。其实他就是设计模式中的思想。
本专栏设计模式,是依靠Java语言进行讲解,同时通过画UML类图进行梳理。设计模式并不是只属于一种语言,它更像是一种思想,并不能说Java设计模式。
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。【摘自https://www.runoob.com/】
设计模式就是技术大牛在长时间的编码过程中,摸索出来的一种规范。并不是说一定要遵守,但是有些情况下使用这种规范去编码能够简单快速的实现功能。
设计模式介绍
作为Java程序员或多或少一定了解过Spring,其实在我们每天使用的Spring中就能发现设计模式。在Spring的底层开发过程中,使用了大量的设计模式的思想。所以设计模式离我们并不是很远,反而是他就在你身边但是你却看不见。
1、设计模式是程序在面对同类软件工程设计问题是总结出来有用的经验,模式不是代码,而是某类问题的通用解决方案,设计模式(Design pattern)代表了最佳实践。这些解决方案是众多开发人员的经过长期的实验和错误总结出来的。
2、设计模式本质提高软件的维护性,通用行扩展性,并降低软件复杂度。
设计模式类型
设计模式分为三种类型共23种
模式 | 包括 |
---|---|
创建型模式 | 单例模式、抽象工厂模式、原型模式、 建造者模式、工厂模式 |
结构型模式 | 适配器模式、桥接模式、装饰器模式、组合模式、外观模式、享元模式、代理模式 |
行为型模式 | 模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式) |
注意:这里的名称可能会有出入,但思想又是相同的。
一张图来整体描述一下设计模式之间的关系。
设计模式的七大原则
设计模式的七大原则分别是:
- 单一职责原则
- 接口隔离原则
- 依赖倒转原则
- 里氏替换原则
- 开闭原则OCP(Open Closed Principle)
- 迪米特法则
- 合成复用原则
这里先不做详细解释每个原则的意思,因为篇幅的原因,下面会单独来谈一谈这些原则的具体意思。
设计模式与GOF
什么是GOF?
在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 的书,该书首次提到了软件开发中设计模式的概念。
四位作者合成GOF(四人帮,全拼Gang of four)。他们提出的设计模式主要基于一下的面向对象设计原则。
- 对接口编程而不是对实现编程
- 优先使用对象组合而不是继承
结语
本篇主要介绍一下设计模式,因为在讲解设计模式之前还需要有一些前置知识,比如能够看懂UML类图等,下一篇我们就先看一下什么是UML类图。