Swift 3中的Singleton

什么是单例?

Singleton是一种设计模式,在该模式下,一个对象只能在您的应用程序中实例化一次。 该对象只有一个副本,并且由任何其他对象全局共享和使用。 创建单例的唯一目的是允许您访问它的共享属性和方法,并使它可以全局访问。 当您只想创建一个对象的实例时,此设计模式很有用。 让我们看一些我们熟悉但完全是单例的示例:

  • sharedURLSession
  • defaultFileManager
  • standardUserDefaults

实现单例

 单例类{ 
静态让sharedInstance = Singleton()
}

这一行代码是实现单例的全部内容。 我们将static放进去是因为它是一种type属性,它的功能是仅创建一个对象的实例,并防止其方法被覆盖。 使用let将保证sharedInstance的值不会改变。

更好的方法

 最终课程Singleton { 
静态让sharedInstance = Singleton()
私人init(){}
}

我们第一次如何实现单例存在一些问题。 首先,我们需要确保不能使用final关键字修改单例或子类。 其次,我们需要防止其他对象通过使用private init创建自己的singleton类实例。 如果我们不使用私有初始化器,则singleton类将创建它自己的默认公共初始化器。

需要注意的重要一点是, static属性和方法默认情况下是延迟初始化的,这意味着直到调用它之前都不会实例化它,因此提供了一些优化。