单例是书中最后一个创建型模式。单例这个设计模式相信大家再熟悉不过了。但单例也是最容易被滥用的设计模式。我们可以通过重新理解单例的意图,来帮助我们在后续的开发中决定是否该使用这中模式。
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
对一些类来说,只有一个实例是很重要的。例如我们 iOS 开发中经常做的提示框。我们希望这种提示框出现一个之后,在消失之前不会出现第二个,这时单例是最好的选择。
—— 定义一个 Instance 操作,允许客户访问它的唯一实例。
—— 可能负责创建它自己的唯一方法。
Swift 上单例的实现,其实很简单。我们只需要使用 static
就可以创建一个全局的实例了,不行像 OC 那样使用 dispatch_once
来保证线程安全。
我们使用 fileprivate
来修饰我们的构造函数。这确保没有其他创建实例的手段。
structMazeFactory{ static let interface = MazeFactory() fileprivate init() { } funcmakeMaze() { print("This is Maze.") } } MazeFactory.interface.makeMaze()
This is Maze.
单例模式使用起来很简单,而单例也可以配合很多模式一起使用。
附: Playground 代码
欢迎讨论、批评、指错。