# 设计模式
[TOC]
## 什么是设计模式
>[info] 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
> **设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结**。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。
设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案。
**通俗解释就是:**
>[success] 设计模式类似于我们做数学应用题时,针对不同的题型,总结出来的不同的解题套路。灵活的运用了不同的公式(就是我们学习到的Java知识点),给这些应用题制定了规范而又简单的解题方法
## 设计模式的使用
设计模式在软件开发中的两个主要用途。
**开发人员的共同平台**
设计模式提供了一个标准的术语系统,且具体到特定的情景。例如,单例设计模式意味着使用单个对象,这样所有熟悉单例设计模式的开发人员都能使用单个对象,并且可以通过这种方式告诉对方,程序使用的是单例模式。
**最佳的实践**
设计模式已经经历了很长一段时间的发展,它们提供了软件开发过程中面临的一般问题的最佳解决方案。学习这些模式有助于经验不足的开发人员通过一种简单快捷的方式来学习软件设计。
## 23种设计模式
创建型模式:简化创建对象的过程
结构型模式:在软件上通过重构,抽象使结构变得更有条理
行为型模式:在现实中具体的业务场景中对某种行为进行的优化