# 設計模式
[TOC]
## 什么是設計模式
>[info] 設計模式(Design pattern)代表了最佳的實踐,通常被有經驗的面向對象的軟件開發人員所采用。設計模式是軟件開發人員在軟件開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟件開發人員經過相當長的一段時間的試驗和錯誤總結出來的。
> **設計模式是一套被反復使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結**。使用設計模式是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。
設計模式是軟件工程的基石,如同大廈的一塊塊磚石一樣。項目中合理地運用設計模式可以完美地解決很多問題,每種模式在現實中都有相應的原理來與之對應,每種模式都描述了一個在我們周圍不斷重復發生的問題,以及該問題的核心解決方案。
**通俗解釋就是:**
>[success] 設計模式類似于我們做數學應用題時,針對不同的題型,總結出來的不同的解題套路。靈活的運用了不同的公式(就是我們學習到的Java知識點),給這些應用題制定了規范而又簡單的解題方法
## 設計模式的使用
設計模式在軟件開發中的兩個主要用途。
**開發人員的共同平臺**
設計模式提供了一個標準的術語系統,且具體到特定的情景。例如,單例設計模式意味著使用單個對象,這樣所有熟悉單例設計模式的開發人員都能使用單個對象,并且可以通過這種方式告訴對方,程序使用的是單例模式。
**最佳的實踐**
設計模式已經經歷了很長一段時間的發展,它們提供了軟件開發過程中面臨的一般問題的最佳解決方案。學習這些模式有助于經驗不足的開發人員通過一種簡單快捷的方式來學習軟件設計。
## 23種設計模式
創建型模式:簡化創建對象的過程
結構型模式:在軟件上通過重構,抽象使結構變得更有條理
行為型模式:在現實中具體的業務場景中對某種行為進行的優化