學習文章
原理圖
說明
- 單例模式人人用過,嚴格的單例模式很少有人實現(xiàn)
- 嚴格的單例模式指的是無法通過常規(guī)的 alloc init 方法來生成對象,派生出來的子類也不能產生出對象,而只能通過單例的方法獲取到對象
源碼
嚴格的單例模式不應該被繼承,不應該被復制,不應該被new等等,只應該獨此一家.
Singleton.swift
import Foundation
enum SingletonError : ErrorType {
case CannotBeInherited
}
class Singleton {
/* --不能被子類調用-- */
static func sharedInstance() throws -> Singleton {
guard self == Singleton.self else {
print("--------Can't be inherited !--------")
throw SingletonError.CannotBeInherited
}
struct Static {
static let sharedInstance = Singleton()
}
return Static.sharedInstance
}
private init() {
}
}