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 ?
}
}