日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

android界面設(shè)計(jì)實(shí)例 android設(shè)計(jì)模式有哪些


android界面設(shè)計(jì)實(shí)例 android設(shè)計(jì)模式有哪些


1. 定義:確保1個(gè)類只有1個(gè)實(shí)例化對象,提供一個(gè)全局訪問點(diǎn)
2. 優(yōu)缺點(diǎn)優(yōu)點(diǎn):客戶端使用單例模式的實(shí)例的時(shí)候,只需要調(diào)用一個(gè)單一的方法即可生成一個(gè)唯一的實(shí)例,有利于節(jié)約資源 。
缺點(diǎn):首先單例模式很難實(shí)現(xiàn)序列化,這就導(dǎo)致采用單例模式的類很難被持久化,當(dāng)然也很難通過網(wǎng)絡(luò)傳輸;其次由于單例采用靜態(tài)方法,無法在繼承結(jié)構(gòu)中使用 。
3. android源碼中的體現(xiàn):例如,加載布局時(shí)經(jīng)常要?jiǎng)?chuàng)建LayoutInflater的實(shí)例,常見的有三種方法:
其實(shí)前兩種最后都是調(diào)用的最后一種,是獲取系統(tǒng)服務(wù)經(jīng)常用到的方法,這只是一個(gè)典型的單例的使用場景,其實(shí)在Android源碼中用到單例的情況還有很多 。
4. 幾種實(shí)現(xiàn)方式1.餓漢式:在聲明變量時(shí)就創(chuàng)建該實(shí)例
優(yōu)點(diǎn):線程安全,多線程中使用不會(huì)出現(xiàn)創(chuàng)建多個(gè)實(shí)例的情況
缺點(diǎn):比較消耗計(jì)算機(jī)資源
2.懶漢式:使用到時(shí)才創(chuàng)建實(shí)例
優(yōu)點(diǎn):節(jié)省計(jì)算機(jī)資源,在單線程下能夠非常好的工作
缺點(diǎn):在多線程下存在線程安全問題
懶漢式
3.懶漢式 雙重校驗(yàn)鎖:DCL ( Double Check Lock)
優(yōu)點(diǎn):既解決了”懶漢式“的多線程問題,又解決了資源浪費(fèi)的現(xiàn)象 。
缺點(diǎn):在某些情況DCL會(huì)出現(xiàn)失效問題,《Java并發(fā)編程實(shí)踐》中提到此問題,并指出這種優(yōu)化是丑陋的,不贊成使用的,而推薦使用靜態(tài)內(nèi)部類實(shí)現(xiàn) 。
DCL失效的原因:線程有可能得到一個(gè)不為null,但是構(gòu)造不完全的對象 。Why?造成不可靠的原因是編譯器為了提高執(zhí)行效率的指令重排 。只要認(rèn)為在單線程下是沒問題的,它就可以進(jìn)行亂序?qū)懭耄员WC不要讓cpu指令流水線中斷 。
懶漢式 雙重校驗(yàn)鎖
【android界面設(shè)計(jì)實(shí)例 android設(shè)計(jì)模式有哪些】4.通過靜態(tài)內(nèi)部類實(shí)現(xiàn)單例
原理:一個(gè)類直到被使用時(shí)才被初始化,而類初始化的過程是非并行的,這些都有 JLS 保證
這也是我自己最常用的單例寫法
靜態(tài)內(nèi)部類實(shí)現(xiàn)單例
5.枚舉單例:寫法簡單,線程安全,并且保證任何情況都是單例
上面的其他實(shí)現(xiàn)單例方法在反序列化(提供了一個(gè)特別的鉤子函數(shù))時(shí)會(huì)創(chuàng)建新的單例,解決方法是如3中實(shí)現(xiàn)readResolve方法返回單例對象,而枚舉單例則不存在此問題 。
枚舉單例
6.使用容器實(shí)現(xiàn)單例:可以管理多種類型的單例

    推薦閱讀