Android涉及到的設計模式

1、適配器模式:ListView或GridView的Adapter

簡介:不同的數據提供者使用一個適配器來向一個相同的客戶提供服務。

 

2、建造者模式:AlertDialog.Builder

簡介:可以分步地構造每一部分。

 

3、命令模式:Handler.post後Handler.handleMessage

簡介:把請求封裝成一個對象發送出去,方便定製、排隊、取消。

 

4、享元模式:Message.obtainMessage通過重用Message對象來避免大量的Message對象被頻繁的創建和銷燬。

簡介:運用共享技術有效地支持大量細粒度的對象。

 

5、迭代器模式:如通過Hashtable.elements方法可以得到一個Enumeration,然後通過這個Enumeration訪問Hashtable中的數據,而不用關心Hashtable中的數據存放方式。

簡介:提供一個方法順序訪問數據集合中的所有數據而又不暴露對象的內部表示。

 

6、備忘錄模式:Activity的onSaveInstanceState和onRestoreInstanceState就是通過Bundle這種序列化的數據結構來存儲Activity的狀態,至於其中存儲的數據結構,這兩個方法不用關心

簡介:不需要了解對象的內部結構的情況下備份對象的狀態,方便以後恢復。

 

7、觀察者模式:我們可以通過BaseAdapter.registerDataSetObserver和BaseAdapter.unregisterDataSetObserver兩方法來向BaseAdater註冊、註銷一個DataSetObserver。這個過程中,DataSetObserver就是一個觀察者,它一旦發現BaseAdapter內部數據有變量,就會通過回調方法DataSetObserver.onChanged和DataSetObserver.onInvalidated來通知DataSetObserver的實現類。事件通知也是觀察者模式

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

 

8、原型模式:比如我們需要一張Bitmap的幾種不同格式:ARGB_8888、RGB_565、ARGB_4444、ALAPHA_8等。那我們就可以先創建一個ARGB_8888的Bitmap作爲原型,在它的基礎上,通過調用Bitmap.copy(Config)來創建出其它幾種格式的Bitmap。另外一個例子就是Java中所有對象都有的一個名字叫clone的方法,已經原型模式的代名詞了

簡介:在系統中要創建大量的對象,這些對象之間具有幾乎完全相同的功能,只是在細節上有一點兒差別。

 

9、代理模式:類似於ios開發的delegate委託模式,所有的AIDL都一個代理模式的例子。假設一個Activity A去綁定一個Service S,那麼A調用S中的每一個方法其實都是通過系統的Binder機制的中轉,然後調用S中的對應方法來做到的。Binder機制就起到了代理的作用。

簡介:爲其他對象提供一種代理以控制對這個對象的訪問。

 

10、狀態模式:View.onVisibilityChanged方法,就是提供了一個狀態模式的實現,允許在View的visibility發生改變時,引發執行onVisibilityChanged方法中的動作。

簡介:狀態發生改變時,行爲改變。

 

11、策略模式:

舉例:Java.util.List就是定義了一個增(add)、刪(remove)、改(set)、查(indexOf)策略,至於實現這個策略的ArrayList、LinkedList等類,只是在具體實現時採用了不同的算法。但因爲它們策略一樣,不考慮速度的情況下,使用時完全可以互相替換使用。

簡介:定義了一系列封裝了算法、行爲的對象,他們可以相互替換。

 

12、調解者模式

簡介:一個對象的某個操作需要調用N個對象的M個方法來完成時,把這些調用過程封裝起來,就成了一個調解者

舉例:如Resource.getDrawable方法的實現邏輯是這樣的:創建一個緩存來存放所有已經加載過的,如果getDrawable中傳入的id所對應的Drawable以前沒有被加載過,那麼它就會根據id所對應的資源類型,分別調用XML解析器生成,或者通過讀取包中的圖片資源文件來創建Drawable。

而Resource.getDrawable把涉及到多個對象、多個邏輯的操作封裝成一個方法,就實現了一個調解者的角色。

 

13、抽象工廠模式

DAO與Service的使用

發佈了52 篇原創文章 · 獲贊 4 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章