「Android設計模式之旅」——設計模式的6大原則

紫霧凌寒發表於2017-02-26
版權宣告:本文為博主原創文章,轉載請註明出處http://blog.csdn.net/u013132758。 https://blog.csdn.net/u013132758/article/details/57532087

前言

       已經很久沒有寫部落格了,今天開始繼續學習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),定義是: 一個物件應該對其他物件有最少的瞭解。通俗得講,一個類應該對自己需要耦合或呼叫的類知道得最少,類的內部如何實現與呼叫者或依賴者沒關係,呼叫者或依賴者只需要知道自己需要呼叫的方法即可,其他可一概不管。

總結

   讀完這一章顯然感覺這一章的六大原則的核心都是“抽象”,第一次認識到抽象在程式碼編寫中的重要性。

參考文獻

《Android原始碼設計模式解析與實戰》   何紅輝 關愛民 著。



相關文章