1. 程式人生 > >設計模式(Design pattern):簡單&粗暴解析

設計模式(Design pattern):簡單&粗暴解析

1.前言

  • Java是面向物件的程式設計,通常都會涉及到 建立物件、物件組成或依賴、物件間互動 的相關操作,一旦在這些操作中沒有合理進行設計,就會引發專案程式碼 耦合度高、靈活性低、無重用、維護困難、擴充套件成本高、可讀性低
  • 設計模式 就是通過 不同模式(即不同編寫程式碼的規範) 解決上述的開發問題。
  • 文章中例項 linhaojian的Github

2.目錄

設計模式目錄.png _______________________________________________________________________________

3.簡介

設計模式簡介.png


4.七大原則

4.1 單一職責原則

  • 定義:一個類或者模組,只有一個引起它變化的原因。應該只有一個職責。
  • 解析:如果一個類中承擔過多的職責,就導致職責相互耦合,一個職責變化有個可能就會影響其他職責,而且影響複用。

例:介面更新與業務邏輯應該分離。

4.2 開閉原則

  • 定義:一個實體(類、函式、模組等),對擴充套件開放,對修改關閉。
  • 解析:在程式擴充套件時,應該不要修改原有的程式碼,通過增加新的實體來擴充套件功能,這樣是為了使程式的擴充套件性好,易於維護和升級,而達到這樣的效果,需要使用介面或者抽象類來實現。

4.3 里氏代換原則

  • 定義:子類替換父類。
  • 解析:里氏代換原則是開閉原則的補充。通過繼承抽象介面或者類的方式,讓子類複用父類&擴充套件。

4.4 依賴倒轉原則

  • 定義:針對介面程式設計,依賴於抽象而不依賴於具體。
  • 解析:依賴倒轉原則是開閉原則的基礎。在2個實體相互依賴時,應儘可能依賴其介面或者抽象類,不要依賴具體的實現類。

4.5 介面隔離原則

  • 定義:使用多個隔離的介面,比使用單個介面要好。
  • 解析:不要把所有功能抽象為一個介面,應把不同的功能抽象多個不同的介面,降低耦合與依賴。

4.6 迪米特原則

  • 定義:一個實體應當儘量少地與其他實體之間發生相互作用,使得功能模組相對獨立。
  • 解析:在一個模組改變時,應避免影響其他模組,因此如果模組間需要互動時,最好通過一個中間者把它們關聯起來,讓任一個模組擴充套件或者修改都不會影響其他模組。

4.7 合成複用原則

  • 定義:在一個新的物件裡面使用一些已有的物件,使之成為新物件的一部分。
  • 解析:新物件在建立時,發現某些已有的物件應該擁有新物件部分功能,因在新物件中可以引用這些物件。簡單地說,就是要儘量使用合成/聚合,儘量不要使用繼承。

5.三大型別

5.1 建立型

  • 定義:隱式的建立物件,隱藏建立的邏輯(new 物件),讓使用者獲取物件時不需關注建立過程,使呼叫者與建立物件過程解耦,一旦建立過程需要擴充套件或者修改,都不會影響呼叫者。
  • 包括:
    1.單例模式
    2.簡單工廠模式
    3.工廠模式
    4.抽象工廠模式
    5.建造者模式

5.2 結構型

  • 定義 :通過類或者物件組合,使結構更強大。
    類結構 :關心類的組合,使用繼承或者實現的方式,由多個類組合成可擴充套件、可複用、可代替的系統。
    物件結構 :關心類與物件的組合,使用類與物件聚合的方式,使系統實現合成複用的效果。
  • 包括:
    1.代理模式
    2.裝飾者模式
    3.外觀模式
    4.享元模式

5.3 行為型

  • 定義 :對在不同物件間劃分責任的抽象化與不同物件間相互作用。
    類行為 :使用繼承的形式分配子類的職責。
    物件行為 :使用聚合的形式使不同物件相互作用。
  • 包括:
    1.觀察者模式
    2.策略模式
    3.模板模式
    4.責任鏈模式
    5.迭代器模式

6.總結

  • 到此,簡單&粗暴解析了設計模式 ,後續我會把上述 三大型別模式 下的各子模式進行解析分享,
    請繼續關注linhaojian_簡書
  • 如果喜歡我的分享,可以點選  關注  或者  ,你們支援是我分享的最大動力 。
    linhaojian的Github

歡迎關注linhaojian_CSDN部落格或者linhaojian_簡書

不定期分享關於安卓開發的乾貨。


寫技術文章初心

  • 技術知識積累
  • 技術知識鞏固
  • 技術知識分享
  • 技術知識交流