「Android設計模式之旅」——設計模式的6大原則
前言
已經很久沒有寫部落格了,今天開始繼續學習Android的23種設計模式,首先在學習設計模式之前我們得先了解設計模式的六大基本原則——單一SRP(單一指責原則)、OCP(開閉原則)、LSP(里氏替換原則)、DIP(依賴倒置原則)、ISP(介面隔離原則)、LOD(迪米特原則)。
1、單一職責原則
單一職責原則的英文名稱是Single Responsibility Principle,縮寫是SRP。單一職責原則的定義顧名思義就是:“就一個類而言,引起它變化的原因只有一個。” 通俗的說就是‘一個類只負責做一件事’。這個“單一”的劃分界限並不是說那麼明顯,但是,如果是兩個完全不一樣的功能就不能放在同一個類之中。
2、開閉原則
開閉原則的英文名稱是Open Close Principle,縮寫是OCP。開閉原則的定義是:“軟體中的物件(類、模組、函式等)應該對於擴充套件是開放的,但是對於修改是封閉的。”我的理解是提倡我們實現繼承,已經存在的實現類關閉修改,不讓我們去修改,但是新的類我們可以通過繼承重寫父類的介面來修改。這個原則可以使我們的專案更加穩定並且靈活。當我們的軟體需要更新升級時,我們儘量通過擴充套件的方式來實現變化,而不是修改原有的程式碼,否則很容易在原有的程式碼中引入新的bug。
3、里氏替換原則
里氏替換原則的英文名稱是Liskov Substitution Principle,縮寫是LSP。里氏替換原則說白了就是“抽象”。它的定義是:所有使用基類的地方都必須能透明地使用其子類的物件。也就是說,所有父類出現的地方都可以用其子類來替換,並且不能產生任何的異常和錯誤。
我們可以發現開閉原則和里氏替換原則的核心都是抽象,抽象依賴於繼承所以說,這兩個原則的核心還是繼承。繼承是OOP(Object Oriented Programming,物件導向程式設計)的三大基本特點(繼承,多型,封裝)之一。在OOP中繼承的優缺點比較明顯,優點當然是程式碼的可擴充套件性高,缺點就是所有子類必須擁有父類的屬性和方法,這就會造成程式碼冗餘,靈活性降低。
4、依賴倒置原則
依賴倒置原則的英文全稱是 Dependence Inversion Principle,縮寫是DIP。依賴倒置原則指代了一種特定的解耦形式,使得高層次的模組不依賴於低層次的模組實現的細節的目的,依賴模組被顛倒了。
依賴倒置原則的幾個關鍵點:
(1)高層次模組不應該依賴於低層次的模組,兩者都應該依賴齊抽象。
(2)抽象不應該依賴細節
(3)細節應該依賴抽象。
感覺怎麼說都有點枯燥難懂,在Java語言中的表現就是:“模組間的依賴通過抽象發生,實現類之間不發生直接的依賴關係,其依賴關係是通過介面或抽象產生的”。
5、介面隔離原則
介面隔離原則的英文全稱是 Interface Segregation Principles,縮寫是ISP。ISP的定義有兩種:
1、客戶端不應該依賴他不需要的介面
2、類間的依賴應該建立在最小的介面上。
介面隔離原則的目的是系統解開耦合,從而容易重構、更改和重新部署。也就是說讓客戶端的介面經可能的小。
6、迪米特原則
迪米特原則的英文全稱是 Law of Demeter,縮寫是LOD,也稱為最少知識原則(Least Knowledge Principle),定義是: 一個物件應該對其他物件有最少的瞭解。通俗得講,一個類應該對自己需要耦合或呼叫的類知道得最少,類的內部如何實現與呼叫者或依賴者沒關係,呼叫者或依賴者只需要知道自己需要呼叫的方法即可,其他可一概不管。
總結
讀完這一章顯然感覺這一章的六大原則的核心都是“抽象”,第一次認識到抽象在程式碼編寫中的重要性。
參考文獻
相關文章
- 設計模式“6”大原則!設計模式
- 設計模式 -- 設計模式七大原則設計模式
- Java的設計模式和6大原則Java設計模式
- 設計模式的六大原則設計模式
- 設計模式的七大原則設計模式
- 好程式設計師Java教程分享Java設計模式的6大原則程式設計師Java設計模式
- 設計模式之7大原則設計模式
- 設計模式-六大原則設計模式
- 設計模式七大原則設計模式
- 設計模式——六大原則設計模式
- 設計模式六大原則設計模式
- 設計模式的七大原則(6) --迪米特法則設計模式
- 設計模式之六大原則設計模式
- Python設計模式六大原則!Python設計模式
- 設計模式的七大原則詳解設計模式
- 設計模式六大原則詳解設計模式
- 設計模式的設計原則設計模式
- 設計模式的分類和六大原則設計模式
- 設計原則 設計模式設計模式
- 【設計模式】設計原則設計模式
- 設計模式 - 設計原則設計模式
- 設計模式的七大原則(5) --開閉原則設計模式
- 設計模式六大原則(六)----開閉原則設計模式
- 設計模式的七大原則(4) --里氏替換原則設計模式
- 設計模式的七大原則(2) --介面隔離原則設計模式
- 設計模式:物件導向設計的六大原則 (絕對詳細)設計模式物件
- 設計模式六大原則(四)----介面隔離原則設計模式
- 設計模式六大原則(五)----迪米特法則設計模式
- 聊一聊設計模式(一)-- 六大原則設計模式
- Java設計模式(一):設計模式概述、UML圖、設計原則Java設計模式
- 設計模式之旅12--橋接模式設計模式橋接
- 設計模式的七大原則(1) --單一職責原則設計模式
- 好程式設計師Java培訓分享Java設計模式的六大原則程式設計師Java設計模式
- 物件導向的7大原則與23種設計模式物件設計模式
- JavaScript設計模式(一)設計原則JavaScript設計模式
- Javascript 設計模式之設計原則JavaScript設計模式
- 設計模式(06)——設計原則(1)設計模式
- 設計模式(07)——設計原則(2)設計模式
- 設計模式系列 6– 命令模式設計模式