課程
/移動開發(fā)
/Android
/Android-仿微信語音聊天
什么是單例?
2015-08-22
源自:Android-仿微信語音聊天 4-1
正在回答
直接寫靜態(tài),會打亂系統(tǒng)的封裝性,可以寫成靜態(tài),但是這樣不規(guī)范。JAVA語言是面向?qū)ο笳Z言,所以,應(yīng)當(dāng)適應(yīng)以面向?qū)ο笏枷虢鉀Q問題,如果寫成了單例模式不僅有高大上的感覺,還能很好的解決多線程導(dǎo)致的建造不同對象
保證了對象的唯一性
和寫成靜態(tài)有什么區(qū)別
單例模式
就是全局只能有一個對象實例
比如
public?class?Singleton{ private?static?Singleton?singleton?=?null; private?Singleton(){} public?static?Singleton?getInstance(){ if(singleton?==?null){ singleton?=?new?Singleton(); } return?singleton; } }
你可以看到,Singleton類的構(gòu)造函數(shù)是私有的,所以你無法在外面new出Singleton對象。只能通過靜態(tài)方法getInstance獲得。這個靜態(tài)方法會返回內(nèi)部私有的Singleton對象的實例,并且會檢查當(dāng)前這個實例是否已經(jīng)創(chuàng)建,創(chuàng)建了就直接返回,沒有創(chuàng)建就創(chuàng)建一個返回。這就保證了,Singleton類的對象實例只能有一個。
當(dāng)然這是最簡單的寫法,在多線程的情況下是不能正常運行的,需要Synchronized同步
舉報
結(jié)合自定義View和API,Dialog管理等實現(xiàn)實現(xiàn)微信語音
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-06-27
直接寫靜態(tài),會打亂系統(tǒng)的封裝性,可以寫成靜態(tài),但是這樣不規(guī)范。JAVA語言是面向?qū)ο笳Z言,所以,應(yīng)當(dāng)適應(yīng)以面向?qū)ο笏枷虢鉀Q問題,如果寫成了單例模式不僅有高大上的感覺,還能很好的解決多線程導(dǎo)致的建造不同對象
保證了對象的唯一性
2015-08-23
和寫成靜態(tài)有什么區(qū)別
2015-08-22
單例模式
就是全局只能有一個對象實例
比如
你可以看到,Singleton類的構(gòu)造函數(shù)是私有的,所以你無法在外面new出Singleton對象。只能通過靜態(tài)方法getInstance獲得。這個靜態(tài)方法會返回內(nèi)部私有的Singleton對象的實例,并且會檢查當(dāng)前這個實例是否已經(jīng)創(chuàng)建,創(chuàng)建了就直接返回,沒有創(chuàng)建就創(chuàng)建一個返回。這就保證了,Singleton類的對象實例只能有一個。
當(dāng)然這是最簡單的寫法,在多線程的情況下是不能正常運行的,需要Synchronized同步