設計模式介紹
- 設計模式(Design Patterns):
- 一套被反覆使用,多數人知曉,經過分類編目,程式碼設計的總結
- 使用設計模式是為了可重用程式碼,讓程式碼更容易理解,保證程式碼可靠性
- 專案中合理運用設計模式可以完美的解決很多問題,每種模式都有相應的原理與之對應,
- 每個模式描述了一個在我們周圍不斷重複發生的問題,以及該問題的核心解決方案
設計模式分類
- 總體來說,設計模式分為三大類:
- 建立型模式(5種):
- 工廠方法模式
- 抽象工廠模式
- 單例模式
- 建造者模式
- 原型模式
- 結構型模式(7種):
- 介面卡模式
- 裝飾器模式
- 代理模式
- 外觀模式
- 橋接模式
- 組合模式
- 享元模式
- 行為型模式(11種):
- 策略模式
- 模板方法模式
- 觀察者模式
- 迭代子模式
- 責任鏈模式
- 命令模式
- 備忘錄模式
- 狀態模式
- 訪問者模式
- 中介者模式
- 直譯器模式
- 建立型模式(5種):
- 其餘兩類模式:
- 併發型模式
- 執行緒池模式
設計模式六大原則
單一職責原則(Single Responsibility Principle) - 這裡的設計模式原則,主要討論的是Java物件導向程式設計設計中設計原則,單一職責原則由於其適用的普遍性,個人認為不放在六大原則之中
- 單一職責原則 :一個類只負責一項職責
- 不能存在多於一個導致類變更的原因
- 單一職責原則符合"高內聚,低耦合"的思想
- 單一職責原則不只是物件導向程式設計思想所特有的,只要是模組化的程式設計,都適用單一職責原則
開閉原則(Open Close Principle)
- 開閉原則 :對擴充套件開放,對修改關閉
- 程式進行擴充套件的時候,不能修改原有的程式碼, 實現一個熱插拔的效果
- 為了使程式擴充套件性好,易於維護和升級:需要使用介面和抽象類
里氏代換原則(Liskov Substitution Principle)
- 里氏代換原則 :任何基類可以出現的地方,子類一定可以出現
- LSP是繼承複用的基石,只有當衍生類可以替換掉基類,軟體單位的功能不受影響時, 基類才能真正被複用,衍生類也能夠在基類的基礎上增加新的行為
- 里氏代換原則是對實現抽象化的具體步驟的規範:
- 里氏代換原則是對開閉原則的補充
- 實現開閉原則的關鍵步驟就是抽象化
- 基類與子類的繼承關係就是抽象化的具體實現
依賴倒轉原則(Dependence Inversion Principle)
- 依賴倒轉原則 :針對介面程式設計,依賴於抽象而不依賴於具體
- 依賴倒轉原則是開閉原則的基礎
介面隔離原則(Interface Segregation Principle)
- 介面隔離原則 :使用多個隔離的介面,比使用單個介面要好,降低類之間的耦合度
- 從介面隔離原則可以看出:設計模式就是一個軟體的設計思想
- 從大型軟體架構出發,為了升級和維護方便 :降低依賴,降低耦合
迪米特法則(最少知道原則)(Demeter Principle)
- 迪米特法則:最少知道原則 ,一個實體應當儘量少的與其它實體發生相互作用,使得功能模組相互獨立
合成複用原則(Composite Reuse Principle)
- 合成複用原則 :儘量使用合成或者聚合的方式,而不是使用繼承