設計模式

????設計模式是一套被反復使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 毫無疑問,設計模式于己于他人于系統都是多贏的,設計模式使代碼編制真正工程化,設計模式是軟件工程的基石,如同大廈的一塊塊磚石一樣。項目中合理地運用設計模式可以完美地解決很多問題,每種模式在現實中都有相應的原理來與之對應,每種模式都描述了一個在我們周圍不斷重復發生的問題,以及該問題的核心解決方案,這也是設計模式能被廣泛應用的原因。

上面引用自 W3CSchool 關于設計模式的一段簡介,大學課程上就曾經學習過設計模式,很慚愧,畢業這么長時間了,最多在項目中使用過一兩個常用的設計模式,還沒有真正去研究了解過Java 23種設計模式。

沒關系,學習不怕晚。我準備從這篇博客開始,重新回顧學習一下Java的23種設計模式。

加油

設計模式的六大原則

開閉原則(Open Close Principle)

開閉原則的意思是:對擴展開放,對修改關閉。在程序需要進行拓展的時候,不能去修改原有的代碼,實現一個熱插拔的效果。簡言之,是為了使程序的擴展性好,易于維護和審計,想要達到這樣的效果,我們需要使用接口和抽象類,后面的具體設計中我們會提到這點。

里氏代換原則(Liskov Substitution Principle)

里氏代換原則是面向對象設計的基本原則之一。里氏代換原則中說,任何基類可以出現的地方,子類一定可以出現。LSP是繼承復用的基石,只有當派生類可以替換掉基類,且軟件單位的功能不受到影響時,基類才能真正被復用,而派生類也能夠在基類的基礎上增加新的行為。里氏代換原則是對開閉原則的補充。實現開閉原則的關鍵步驟就是抽象化,而基類與子類的繼承關系就是抽象化的具體實現,所以里氏代換原則是對實現抽象化的具體步驟的規范。

依賴倒轉原則(Dependdence Inversion Principle)

這個原則是開閉原則的基礎,具體內容:針對接口編程,依賴于抽象而不依賴于具體

接口隔離原則(Interface Segregation Principle)

這個原則的意思是:使用多個隔離的接口,比使用單個接口要好。它還有另一個意思是:降低類之間的耦合度。由此可見,其實設計模式就是從大型軟件架構出發、便于升級和維護的軟件設計思想,它強調降低依賴,降低耦合。

迪米特法則,又稱最少知道原則(Demeter Principle)

最少知道原則是指:一個實體應當盡量少地與其他實體之間發生相互作用,使得系統功能模塊相對獨立。

合成復用原則(Composite Reuse Principle)

合成復用原則是指:盡量使用合成/聚合的方式,而不是使用繼承

設計模式的分類

23種設計模式,可以分為三個大類型:創建型模式(Creational Patterns)、結構型模式(Structural Patterns)、行為型模式(Behavioral Patterns)。

創建型模式

  1. 工廠方法模式
  2. 抽象工廠模式
  3. 單例模式
  4. 建造者模式
  5. 原型模式

結構型模式

  1. 適配器模式
  2. 裝飾器模式
  3. 代理模式
  4. 外觀模式
  5. 橋接模式
  6. 組合模式
  7. 享元模式

行為型模式

  1. 策略模式
  2. 模板方法模式
  3. 觀察者模式
  4. 迭代子模式
  5. 責任鏈模式
  6. 命令模式
  7. 備忘錄模式
  8. 狀態模式
  9. 訪問者模式
  10. 中介者模式
  11. 解釋器模式
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 設計模式之六大原則(轉載) 關于設計模式的六大設計原則的資料網上很多...
    霄霄霄霄閱讀 911評論 0 1
  • 前言 設計模式六大原則網上資料比較多比較亂,本文將網上的一些好的資料做一下整理,以便隨時翻閱。友情提示,設計模式雖...
    簡單的土豆閱讀 1,452評論 0 10
  • title: 設計模式簡介categories: 設計模式tags: 設計模式date: 2017-05-03 0...
    九命丿相柳閱讀 603評論 0 0
  • 本文集網絡上文章及自己coding和理解的結果而來,是設計模式學習的開篇。 本文介紹設計模式的一些概念,分類,和設...
    月落蝶殤閱讀 543評論 0 0
  • 面向對象設計的五大原則 單一職責原則(SRP) 一個類應該僅有一個職責。 開放封閉原則(OCP) 對擴展開放,...
    LiuHDme閱讀 1,485評論 0 3