單例模式解析

單例模式是一種最常見的設(shè)計(jì)模式。
使用場景:確保某個(gè)類有且只有一個(gè)對象的場景。
實(shí)現(xiàn)單例模式的幾個(gè)關(guān)鍵點(diǎn):
1、構(gòu)造函數(shù)不對外開放,私有構(gòu)造方法。
2、通過類方法或枚舉返回單例對象;
3、確保單例對象有且只有一個(gè),尤其在多線程的環(huán)境下;
4、確保單例對象在反序列化時(shí)不會重新構(gòu)建對象;

由于單例模式很常見,網(wǎng)上都能找到各種寫法,本文只總結(jié),不在給出具體的代碼,后面又連接供參考。

Java單例模式的幾種寫法:
1、餓漢式
2、餓漢式(靜態(tài)代碼塊)
3、懶漢式(線程不安全)
4、懶漢式 (線程安全)
5、雙重校驗(yàn)鎖 (懶漢式 線程安全變種)
6、靜態(tài)內(nèi)部類
7、枚舉
8、使用容器實(shí)現(xiàn)單例

注意:1、餓漢式和靜態(tài)內(nèi)部類的實(shí)現(xiàn)方式區(qū)別和使用場景。
2、如何避免反序列化 readResolve();

Objective-C單例模式的幾種寫法:
1、不使用GCD
2、使用GCD

注意:1、線程安全
2、避免alloc 和 copy
當(dāng)我們調(diào)用alloc函數(shù)時(shí)我們進(jìn)一步會調(diào)用allocWithZone方法
3、MRC 下的引用計(jì)數(shù)和子類化 NSAllocateObject([self class],0,NULL);

參考:
Java實(shí)現(xiàn)代碼
1、http://www.cnblogs.com/itliuchao/p/4497778.html
2、http://blog.csdn.net/u012507894/article/details/50541108
OC實(shí)現(xiàn)代碼
3、http://www.itdecent.cn/p/6b012ebc10fe
4、http://www.itdecent.cn/p/4f49c5c81021

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 單例模式(SingletonPattern)一般被認(rèn)為是最簡單、最易理解的設(shè)計(jì)模式,也因?yàn)樗暮啙嵰锥?,是?xiàng)目中最...
    成熱了閱讀 4,530評論 4 34
  • 在軟件工程中,單例是一種用于實(shí)現(xiàn)單例的數(shù)學(xué)概念, 既將類的實(shí)例化僅限制成一個(gè)對象的一種設(shè)計(jì)模式.或者我們可以簡單地...
    英貳與我閱讀 449評論 0 3
  • 1.單例模式概述 (1)引言 單例模式是應(yīng)用最廣的模式之一,也是23種設(shè)計(jì)模式中最基本的一個(gè)。本文旨在總結(jié)通過Ja...
    曹豐斌閱讀 3,062評論 6 47
  • 前言 本文主要參考 那些年,我們一起寫過的“單例模式”。 何為單例模式? 顧名思義,單例模式就是保證一個(gè)類僅有一個(gè)...
    tandeneck閱讀 2,623評論 1 8
  • 昨天給店員培訓(xùn),先總結(jié)了下《銷售洗腦》中讓告訴我們的銷售目的,遵循的原則,實(shí)施的步驟,使用的方法。發(fā)現(xiàn)講了之...
    上帝愛非洲閱讀 215評論 0 0

友情鏈接更多精彩內(nèi)容