一行代碼實(shí)現(xiàn)swift的單例模式

swift實(shí)現(xiàn)單例的四種方式 :

單例模式

單例模式是設(shè)計(jì)模式中最簡(jiǎn)單的一種,甚至有些模式大師都不稱其為模式,稱其為一種實(shí)現(xiàn)技巧,因?yàn)樵O(shè)計(jì)模式講究對(duì)象之間的關(guān)系的抽象,而單例模式只有自己一個(gè)對(duì)象。

當(dāng)你只需要一個(gè)實(shí)例的時(shí)候需要使用單例,如UIApplication.sharedApplication() 等 ,windows的任務(wù)管理器,回收站 都是只能同時(shí)存在一個(gè)。

下面看看swift中的4種實(shí)現(xiàn)方式:

1、import Foundation

class SingleOne {

//單例

static let shareSingleOne = SingleOne()

}

一句話搞定,靜態(tài)常理。所有地方用到的都是同一個(gè)!

2、import Foundation?

class SingleTwo {

//單例

class func shareSingleTwo()->SingleTwo{

struct Singleton{

static var onceToken : dispatch_once_t = 0

static var single:SingleTwo?

}

dispatch_once(&Singleton.onceToken,{

Singleton.single=shareSingleTwo()

}

)

return Singleton.single!

}

}

使用dispatch_once可以保證其中的代碼只執(zhí)行一次

3、

import Foundation

//全局的常量

let single = SingleThree()

class SingleThree {

class var sharedInstance : SingleThree {

return single ?}

}

4、import Foundation

class SingleFour {

static var sharedInstance : SingleFour {

struct Static {

static let instance : SingleFour = SingleFour()

}

return Static.instance ?

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容