单例

120 阅读1分钟

应用场景

在程序运行周期中,有一个全局可以调用的对象。这时,需要使用单例模式实现。

API 及语言

Swift

核心逻辑/代码

单利需要满足以下几点:

  • 可以全局调用 -- static 修饰这个类创建的对象,因为被 staitc 修饰的对象会存放在全局区,在整个程序的生命周期中,这个对象不会被动销毁
  • 全局有且只有这一个对象 -- 初始化函数设置为 private,保证这个单例的对象只能被自身创建。

为什么在单例中用 static 修饰?

  1. 首先 static 修饰的属性是全局变量属性,因为被 static 修饰的变量,可以直接通过类名/结构体名等访问 static 修饰的属性
  2. 全局变量属性默认都是懒加载的。对于全局变量来说,显然程序一启动就加载的方式不合适,于是,还是在需要的时候再进行加载。

示例代码

// 创建单例
class Base {
    static let `default` = Base()
    
    private init() {}
    
    var age = 4
}

// 调用
Base.default.age = 5