設計模式(Design pattern):簡單&粗暴解析
阿新 • • 發佈:2018-11-10
1.前言
- Java是面向物件的程式設計,通常都會涉及到 建立物件、物件組成或依賴、物件間互動 的相關操作,一旦在這些操作中沒有合理進行設計,就會引發專案程式碼 耦合度高、靈活性低、無重用、維護困難、擴充套件成本高、可讀性低。
設計模式
就是通過 不同模式(即不同編寫程式碼的規範) 解決上述的開發問題。- 文章中例項 linhaojian的Github
2.目錄
_______________________________________________________________________________
3.簡介
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_簡書!
不定期分享關於安卓開發的乾貨。
寫技術文章初心
- 技術知識積累
- 技術知識鞏固
- 技術知識分享
- 技術知識交流