標籤:android style blog class java color
轉載地址:http://blog.csdn.net/dengshengjin2234/article/details/8502097
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的使用