小经验小TipiOS 开发每天分享优质文章iOS学习笔记

设计模式笔记及Swift上的实现之五『SINGLETON(单例)

2017-02-12  本文已影响37人  sim_cai

单例是书中最后一个创建型模式。单例这个设计模式相信大家再熟悉不过了。但单例也是最容易被滥用的设计模式。我们可以通过重新理解单例的意图,来帮助我们在后续的开发中决定是否该使用这中模式。

意图

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

动机

对一些类来说,只有一个实例是很重要的。例如我们 iOS 开发中经常做的提示框。我们希望这种提示框出现一个之后,在消失之前不会出现第二个,这时单例是最好的选择。

适用性

结构

参与者

—— 定义一个 Instance 操作,允许客户访问它的唯一实例。
—— 可能负责创建它自己的唯一方法。

协作

效果

实现

代码示例

Swift 上单例的实现,其实很简单。我们只需要使用 static 就可以创建一个全局的实例了,不行像 OC 那样使用 dispatch_once 来保证线程安全。
我们使用 fileprivate 来修饰我们的构造函数。这确保没有其他创建实例的手段。

struct MazeFactory {
    
    static let interface = MazeFactory()
    
    fileprivate init() {
    }
    
    func makeMaze() {
        print("This is Maze.")
    }
    
}

MazeFactory.interface.makeMaze()

打印结果

This is Maze.

总结

单例模式使用起来很简单,而单例也可以配合很多模式一起使用。

附:Playground 代码

欢迎讨论、批评、指错。

上一篇 下一篇

猜你喜欢

热点阅读