设计模式是类变量具有类本身

时间:2018-08-24 22:17:49

标签: swift design-patterns

包含类本身的类变量,例如,类mainDispatchQueue属性

问题1

这是一种什么样的设计模式?这和辛格尔顿有关吗?

问题2

在引用此属性时,对象如何初始化?

1 个答案:

答案 0 :(得分:0)

是的,它是单例模式。像UserDefaults.standardNotificationCenter.defaultFileManager.default,…一样迅速。例如,URLSession.shared在苹果docs中的定义为:

  

共享的单例会话对象。

单例模式可确保仅创建该类的一个实例。该类在第一次请求时会延迟创建其唯一实例,然后确保无法创建其他实例。

以下是一些示例代码:

class MyClass {
    static let shared = MyClass()

    //Make the initializer private
    private init(){}

    //Here is a sample method
    func doSomething() {
        print("Doing something")
    }
}

进行初始化程序可避免创建许多实例的可能性,因此以下行将产生错误:

let instance = MyClass() //MyClass initializer is inaccessible due to private protection level

要访问单例,请使用MyClass.shared

let instance = MyClass.shared
instance.doSomething() //Prints: Doing something

有关Swift中单例模式的更多详细信息,您可以查看herehere