单件的实现与配置

单件模式是日常开发中最常见的开发模式。单件即可以简化代码实现中对象的访问,同时可以提升代码可读性。

单件实现

swift 中实现单件模式也非常简单,如下:


class Singleton {
    //单件实例
    public static shared = Singleton()

    //利用 private 私有化构建函数,确保实例对象必须通过单件进行访问
    private init() {}

    func foo() {
        print("foo ... ok")
    }
}

访问代码就可以是:

    // 单件应用
    Singleton.shared.foo()

从以上代码可以看出,单件实例初始化通常是不提供参数的。如果需要定制单件初始化配置,就需要额外做些操作了。

单件配置

为了解决单件初始化过程中的配置问题,可以这样进行实现。

//增加一个内部设置类
private class SingletonConfig {
    //配置项
    var name: String?
}

class Singleton {
    //单件实例
    public static shared = Singleton()
    //类配置
    private static config = SingletonConfig()
    //类方法 - 进行单件初始化设置
    public class func setup(_ name: String = "jay") {
        Singleton.config.name = name
    }

    //利用 private 私有化构建函数,确保实例对象必须通过单件进行访问
    private init() {}

    func foo() {
        //访问配置项
        print("foo \(Singleton.config.name!)... ok")
    }
}

使用的话,就可以是这样:

    // 单件配置
    Singleton.setup("mbox.dev")
    // 单件应用
    Singleton.shared.foo()

None None

评论