Java設計模式——23種模式

背景

最近在整合Java設計模式,平常偶爾也遇到過,同事之間也討論過這模式的特點,本次結合當前個人經驗及網上各位大神的分享,然後得出比較通俗易懂,當然在現實的項目中,裏面包含的一些設計模式是比這複雜,望讀者見諒本人因時間不易及撰寫博客不易。

設計模式從不斷重複的事件中發現和抽象出的規律,是解決問題形成的經驗總結(個人閱讀一些書記下的一句話)。設計模式可以使得代碼可重複性、可靠性、易讀易被他人理解;設計模式是從項目中總結出來的,所以學習設計模式也要不斷地回到實踐之中。


設計模式的六大原則

  1. 開閉原則(Open Close Principle)
  2. 里氏代換原則(Liskov Substitution Principle)
  3. 依賴倒轉原則(Dependence Inversion Principle)
  4. 接口隔離原則(Interface Segregation Principle)
  5. 迪米特法則(最少知道原則)(Demeter Principle)
  6. 合成複用原則(Composite Reuse Principle)

開閉原則(Open Close Principle)
對擴展開放,對修改關閉。在程序需要進行拓展的時候,不能去修改原有的代碼,實現一個熱插拔的效果。所以一句話概括就是:爲了使程序的擴展性好,易於維護和升級。想要達到這樣的效果,我們需要使用接口和抽象類。

里氏代換原則(Liskov Substitution Principle)
里氏代換原則(Liskov Substitution Principle LSP)面向對象設計的基本原則之一。 里氏代換原則中說,任何基類可以出現的地方,子類一定可以出現。 LSP是繼承複用的基石,只有當衍生類可以替換掉基類,軟件單位的功能不受到影響時,基類才能真正被複用,而衍生類也能夠在基類的基礎上增加新的行爲。里氏代換原則是對“開-閉”原則的補充。實現“開-閉”原則的關鍵步驟就是抽象化。而基類與子類的繼承關係就是抽象化的具體實現,所以里氏代換原則是對實現抽象化的具體步驟的規範。百度百科
依賴倒轉原則(Dependence Inversion Principle)
這個是開閉原則的基礎,具體內容:真對接口編程,依賴於抽象而不依賴於具體。
接口隔離原則(Interface Segregation Principle)
使用多個隔離的接口,比使用單個接口要好,降低類之間的耦合度。從這兒我們看出,其實設計模式就是一個軟件的設計思想,從大型軟件架構出發,爲了升級和維護方便。通俗點:降低依賴,降低耦合。
迪米特法則(最少知道原則)(Demeter Principle)
一個實體應當儘量少的與其他實體之間發生相互作用,使得系統功能模塊相對獨立。
合成複用原則(Composite Reuse Principle)
儘量使用合成/聚合的方式,而不是使用繼承。


設計模式的分類

總體來說設計模式分爲三大類,共二十三種
創建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
行爲型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。
延伸瞭解:其實還有兩類,併發型模式和線程池模式。
另外附上一些大神編寫的設計模式之間的關係圖:
這裏寫圖片描述


Java的23種設計模式

以下的內容已經整理成ppt以及代碼代碼,由於考慮到上傳 Rational Rose 畫的類圖、關係圖比較麻煩,讀者可下載本人的ppt(如果積分有點高的話,可留言,會把積分調低寫),裏面有類圖可結合博客更理解設計模式,請見諒,謝謝!!!另外對應的模式代碼可在相對應的Package下分類好。

本文章主要參考有博主1博主2等,注:本篇文章需要後續加入相關具體代碼說明。


May-The-Good-Luck-Be-With-You

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章