1.什么是設計模式
設計模式(Design pattern)是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。
使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 毫無疑問,設計模式於己於他人於系統都是多贏的,使代碼編制真正工程化。
設計模式是軟件工程的基石,如同大廈的一塊塊磚石一樣。項目中合理的運用設計模式可以完美的解決很多問題,每種模式在現在中都有相應的原理來與之對應,每一個模式描述了一個在我們周圍不斷重復 發生的問題,以及該問題的核心解決方案,這也是它能被廣泛應用的原因。
1994年,有四位作者:Erich Gamma,Richard Helm,Ralph Johnson 和John Vlissides發表了一本題為《設計模式 - 可重用的面向對象 軟件元素》的圖書,該書在軟件開發中開創了設計模式的概念。這些 作者被統稱為四人幫(GOF)
- 模式:在某些場景下,針對某類問題的某種通用的解決方案
- 場景:項目所在的環境
- 問題:約束條件,項目目標等
- 解決方案:通用、可復用的設計,解決約束達到目標
2.設計模式六大原則
- 單一職責原則(Single Responsibility Principle, SRP):一個類只負責一個功能領域中的 相應職責,或者可以定義為:就一個類而言,應該只有一個引起它變化的原因。
- 開閉原則(Open-Closed Principle, OCP):一個軟件實體應當對擴展開放,對修改關閉。 即軟件實體應盡量在不修改原有代碼的情況下進行擴展。
- 里氏代換原則(Liskov Substitution Principle, LSP):所有引用基類(父類)的地方必須 能透明地使用其子類的對象。里氏替換原則的主要作用就是規范繼承時子類的一些書寫 規則。其主要目的就是保持父類方法不被覆蓋。子類可以實現父類的抽象方法,但是不能覆蓋父類的非抽象方法、子類中可以增加自己特有的方法。
- 依賴倒轉原則(Dependency Inversion Principle, DIP):抽象不應該依賴於細節,細節 應當依賴於抽象。換言之,要針對接口編程,而不是針對實現編程。
- 接口隔離原則(Interface Segregation Principle, ISP):使用多個專門的接口,而不使用 單一的總接口,即客戶端不應該依賴那些它不需要的接口。
- 迪米特法則(Law of Demeter, LoD):一個軟件實體應當盡可能少地與其他實體發生相互作用。
3.設計模式三大分類
- 創建型模式:對象實例化的模式,創建型模式用於解耦對象的實例化過程
- 結構型模式:把類或對象結合在一起形成 一個更大的結構
- 行為型模式:類和對象如何交互,及划分責任和算法

