独生子

单例是一种经常使用的设计模式,它由在整个程序中共享的类的单个实例组成。

在下面的示例中,我们创建了一个 static 属性,该属性包含 Foo 类的实例。请记住,static 属性在类的所有对象之间共享,并且不能被子类化覆盖。

public class Foo
{
    static let shared = Foo()
    
    // Used for preventing the class from being instantiated directly
    private init() {}
    
    func doSomething()
    {
        print("Do something")
    }
}

用法:

Foo.shared.doSomething()

一定要记住 private 初始化程序:

这可以确保你的单例真正独一无二,并通过访问控制防止外部对象创建自己的类实例。由于所有对象都带有 Swift 中的默认公共初始化程序,因此你需要覆盖 init 并将其设为私有。 KrakenDev