最近在整理一些設計模式相關的東西蒿叠,隨便記一下明垢,好記性不如爛筆頭,另外也可以達到”警示后人”的作用市咽,哈哈哈哈哈痊银!
一.單例模式實現(xiàn)方式:
餓汗模式,懶漢模式施绎,鎖溯革,雙重鎖,靜態(tài)代碼塊谷醉,枚舉單例,容器單例俱尼。
源碼應用:
UIL:采用的單例模式是 ?雙重鎖單例的實現(xiàn)方法(但源碼中未對 instance 設置 volatile關鍵字)
layoutInflate:getSystemServive 用到的單例模式是 容器單例模式抖单。
MQTT:雙重鎖機制獲取單例
二.建造者模式
源碼應用:alertDialog
自己應用:封裝日志庫的參數(shù)傳遞,播放器創(chuàng)建封裝等。
三.原型模式(cloneable)
源碼應用:intent.clone,arraylist.clone
四:工廠模式
源碼應用:activity.oncreate
自已運用:播放器兼容矛绘,對外提供統(tǒng)一接口
五.策略模式:
源碼應用:animation 的 interceptor(線性耍休,漸邊等差值器)
自己運用:日志庫緩存策略的運用,UIL的逆序加載策略(默認是順序加載的)
六.狀態(tài)模式:
源碼應用:通過setLevel來設置background的圖片
七货矮、責任鏈模式
源碼應用:Android 的事件分發(fā)機制羊精,okhttp的一系列攔截器實現(xiàn)。
八.觀察者模式:
源碼應用:listview ? ?recycleview ? ?rxjava ? ? broadcastReceiver ? ? EventBus
九.備忘錄模式:
源碼應用:activity onSaveInstance() onRestoreInstance()
十.迭代器模式:
源碼應用:list 次屠、set等的 ?iterator ?, ?sqlite 的 cursor 等
十一.模板方法模式:
源碼應用:ansycTask執(zhí)行流程(onpreExcute();doInbackground(),postExcute(),onProgressUpdate())
activity 執(zhí)行流程:
onCreate().onStart();,onResume().....
UIL:loadImage()(緩存园匹,加載圖片雳刺,圖片顯示)
十二.代理模式
源碼應用:activitymanagerProxy
十三.組合模式
源碼應用:view ViewGroup
十四.適配器模式
源碼應用:listview ?recycleview ?adapter
十五.裝飾器模式
源碼應用:context,contextImpl,activity 等
十六.享元模式
源碼應用:string常量池 ? ?message.obain()
十七:外觀模式
源碼應用:插件化 ?assetmanager等