1. 程式人生 > >Android設計模式學習筆記第一章-----面向物件的6大原則

Android設計模式學習筆記第一章-----面向物件的6大原則

一、單一職責原則

說明:每一個類中的屬性及方法都具有與這個類強相關的特點。如需要構建一個影象快取的功能,根據UML圖完成設計,則需要構建一個影象快取的類ImageCache,和一個影象載入的類ImageLoad。如果把這兩個類的功能共同放到影象快取類ImageCache中,則會出現快取和載入程式碼在一個類中的情況,這樣如果後期只需要載入功能或只需要快取功能,就不得不新建別的類。或後期新增新的函式操作,同樣需要改變ImageCache類的結構,不方便程式碼維護。

優勢:拆分類,使得每個類的屬性及方法都只對應同一種功能,方便後續更新及維護。

二、開閉原則

說明:軟體中的物件應對於擴充套件是開放的,對於修改是封閉的。如上面的ImageCache類,當需要新增快取方式時,可通過繼承的方式實現功能的擴充套件,而不是直接去修改ImageCache程式碼本身。如果直接修改程式碼實現更新,會造成ImageCache類隨著功能的增加越來越龐大而難以維護,同時還會引入BUG。

優勢:通過介面及抽象類的形式使得物件實現得以抽象出來。以後的更新基於繼承介面或抽象類實現,而不去修改實現類本身的程式碼。

三、里氏替換原則

說明:所有引用基類的地方必須能透明地使用其子類的物件。其核心原理是抽象。當一個方法不能被替換時,可以建立這個方法的抽象,通過在子類中重寫這個方法實現方法功能的替換。

優勢:在子類中透明地使用父類的方法,保證系統的擴充套件性及靈活性。

四、依賴倒置原則

說明: 模組間的依賴通過抽象傳送,實現類之間不發生直接依賴關係,其依賴關係是通過介面或抽象產生的。總結概括就是面向介面程式設計。

優勢:重寫介面,將功能拆分為不同模組,且不同模組間不產生直接依賴關係,便於實現類的程式碼維護及擴充套件。具體實現可通過依賴注入的方式,選擇適合的實現類物件。

五、介面隔離原則

說明:客戶端不應依賴他不需要的介面。這裡的介面指的是各個類間的連線介面,而不是介面類。如在多個個類中例項化了一個工具類的物件,則多個類中的物件例項只依賴於這個工具類物件的抽象而不是具體實現。

優勢:解耦了系統,從而容易重構和更改。

六、迪米特原則

說明:一個類應該對自己需要耦合或呼叫的類知道的最少,類的內部如何實現與呼叫者或依賴者沒關係,呼叫者只需要知道它需要的方法就可以。簡而言之,就是找準誰才是這個類需要用到的物件,把沒用的物件通過封裝方法或屬性由其必須有依賴關係的類中實現。

優勢:解耦了系統,從而容易重構和更改