天天看點

Android設計模式,你不知道那些?23種模式淺析

作者:Android秃老師

概述

設計模式是一套被反複使用、多數人知曉、經過分類的、代碼設計經驗的總結。 為了提高代碼可重用性、讓代碼更容易被他人了解、保證代碼可靠性, 使代碼編寫真正工程化, 是軟體工程的基石脈絡。

設計模式分類

常用的設計模式有23種,可分為三大類:

  1. 建立型:【共五種】工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
  2. 結構型:【共七種】擴充卡模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
  3. 行為型:【共十一種】政策模式、模闆方法模式、觀察者模式、疊代器模式、責任鍊模式、指令模式、備忘錄模式、狀态模式、通路者模式、中介者模式、解釋器模式。

設計模式詳解

1、單例模式:

目的是為了讓系統中隻有一個調用對象,缺點是單例使其他程式過分依賴它,而且不同單例運作在不同程序中,使得維護困難

2、工廠模式:

生産固定的一些東西,如抽象類,缺點是産品修改麻煩;如喜歡動作片和愛情片的人分别向伺服器發出同一個請求,就可以得到他們想看的影片集,相當于不同對象進行同一請求,需求均得到滿足。

3、抽象工廠模式:

抽象工廠就是生産接口。因為類繼承接口就擁有接口的特性。是以我們稱這種生産接口的工廠模式為抽象的工廠模式。當然工廠類跟普通工廠一樣。可以自己根據需求随意變化。

4、建造者模式:

将一個複雜對象的建構與它的表示分離,使得同樣的建構過程可以建立不同的表示。

5、原型模式:

用原型執行個體指定建立對象的種類,并通過拷貝這些原型建立新的對象。将實作Cloneable的類的對象通過clone方法實作對對象的拷貝。

6、擴充卡模式:

将一個類的接口轉換成客戶希望的另外一個接口。不同的資料提供者使用一個擴充卡來向一個相同的客戶提供服務。

7、裝飾器模式:

動态地給一個對象添加一些額外的職責。就擴充功能而言, 它比生成子類方式更為靈活。

8、代理模式:

代理是一個中間者的角色,它屏蔽了通路方和委托方之間的直接接觸。也就是說通路方不能直接調用委托方的這個對象,而是必須執行個體化一個跟委托方有同樣接口的代理方,通過這個代理方完成對委托方的調用。

9、外觀模式

外觀模式也稱門面模式。當我們開發 Android 的時候,無論是做 SDK 還是封裝 API,大多都會用到外觀模式,它通過一個外觀類使得整個系統的結構隻有一個統一的高層接口,這樣能降低使用者的使用成本。

10、橋接模式:

将抽象部分與它的實作部分分離,使它們都可以獨立地變化。

11、組合模式

這種模式在安卓中最常見,Android中的view是一種樹形結構,每個viewGroup包含一些列的view,而每個viewGroup本身又可以當做一個view,是以最終手機上呈現出來的界面,是由一個個view組合而成的。

12、 享元模式

緩存池思想“共享”對象,避免重複建立。用map緩存,有就直接取用,沒有時建立并push到map裡。Message單連結清單重複利用表頭也可以。

13、 政策模式

有一系列的算法,将每個算法封裝起來(每個算法可以封裝到不同的類中),各個算法之間可以替換,政策模式讓算法獨立于使用它的客戶而獨立變化。

14、模闆方法模式

定義一個操作中的算法架構,而将一些步驟延遲到子類中,使得子類可以不改變一個算法的結構即可重定義該算法的某些特定的步驟。

15、觀察者模式:

一個對象發生改變時,所有信賴于它的對象自動做相應改變。

16、疊代器模式

提供一種方法順序通路一個聚合對象中各個元素, 而又不需暴露該對象的内部表示。

17、責任鍊模式

有多個的對象可以處理一個請求,哪個對象處理該請求運作時刻自動确定。

18、指令模式

把請求封裝成一個對象發送出去,友善定制、排隊、取消。

19、備忘錄模式

不需要了解對象的内部結構的情況下備份對象的狀态,友善以後恢複。

20、狀态模式

根據狀态的不同,提供不同的行為。

21、通路者模式:

表示一個作用于某對象結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用于這些元素的新操作。

22、中介者模式:

用一個中介對象來封裝一系列的對象互動。中介者使各對象不需要顯式地互相引用,進而使其耦合松散,而且可以獨立地改變它們之間的互動

23、解釋器模式:

給定一個語言,定義它的文法的一種表示,并定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。

23種設計模式我們簡答介紹了,更多《Android技術進階學習》可以點選前往領取。(裡面100w文字+圖解Android技術彙總),讓你學習更輕松簡單。設計模式優點更弱的耦合性,更靈活的控制性,更好的擴充性;但是幾乎所有設計模式的通病就是類的膨脹,大量衍生類的建立。需要可私信發送:“手冊”即可擷取!

Android設計模式,你不知道那些?23種模式淺析
Android設計模式,你不知道那些?23種模式淺析

【私信:“手冊”擷取】Android核心技術進階手冊

設計的六大原則

  • 單一職責原則:一個類隻有一個引起它變化的原因
  • 開閉原則:即 開放封閉原則, 對擴充是開放的,對修改是封閉的
  • 裡氏替換原則:任何基類可以出現的地方,子類一定可以出現
  • 依賴倒置原則:細節依賴于抽象
  • 接口隔離原則:建立單一接口,盡量細化接口
  • 迪米特法則 (最少知識原則):一個對象應當對其他對象有盡可能少的了解

繼續閱讀