1. 程式人生 > >Swift 四種實現單例的方式

Swift 四種實現單例的方式

單例模式

單例模式是設計模式中最簡單的一種,甚至有些模式大師都不稱其為模式,稱其為一種實現技巧,因為設計模式講究物件之間的關係的抽象,而單例模式只有自己一個物件。

當你只需要一個例項的時候需要使用單例,如UIApplication.sharedApplication() 等 ,windows的工作管理員,回收站 都是隻能同時存在一個。

下面看看swift中的幾種實現方式:

1、

import Foundation

class SingleOne {

    //單例
    static let shareSingleOne = SingleOne()

}

一句話搞定,靜態常理。所有地方用到的都是同一個

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可以保證其中的程式碼只執行一次

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

在方法內定義靜態常量