Swift实现单例模式
2017-05-17 16:04
274 查看
设计模式一直都是老生常谈的,自己最近学习Swift,就拿设计模式来练练手吧
首先是单例模式
2、控制实例产生的数量,达到节约资源的目的
3、作为通信的媒介使用,其实就是数据的共享,它可以在不建立直接关联的情况下,让多个不相关的线程之间实现通信
iOS中比较经典的单例类有:UIApplication、FileManager、NotificationCenter、URLCache、UserDefaults等等
2、带立即执行的闭包初始化器的全局变量
3、结构体实现单例
4、定义私有静态变量 通过公有方法访问
观察以上不难发现,所有的类中我都添加了构造方法的私有化,这样是保证其他地方不能自己init,这也是因为Swift 3.0 废弃了dispatch_xxx之后的比较简单的方式来保证单例不能实例化的问题。
首先是单例模式
一、为什么要使用单例模式?
1、控制资源的使用,通过线程同步来控制资源的并发访问(我觉得这个对客户端来说,只是个理论而已)2、控制实例产生的数量,达到节约资源的目的
3、作为通信的媒介使用,其实就是数据的共享,它可以在不建立直接关联的情况下,让多个不相关的线程之间实现通信
iOS中比较经典的单例类有:UIApplication、FileManager、NotificationCenter、URLCache、UserDefaults等等
二、实现方式
1、直接访问静态属性的方式//第一种方式 直接访问静态属性 //final 关键字定义了该类不能被继承 final class Singleton1: NSObject { static let shareInstance = Singleton1(); private override init() { print("Singleton1 初始化了一次") } }
2、带立即执行的闭包初始化器的全局变量
final class Singleton2: NSObject { static var shareInstance:Singleton2 = { let instance = Singleton2(); return instance; }(); private override init() { print("Singleton2 初始化了一次") } }
3、结构体实现单例
//第三种方式:结构体实现单例 final class Singleton3: NSObject { private class var shared : Singleton3 { struct SharedSingleton { static let instance = Singleton3() } return SharedSingleton.instance; } class func shareInstance() -> Singleton3 { return shared; } private override init() { print("Singleton3 初始化了一次") } }
4、定义私有静态变量 通过公有方法访问
//第四种方式:定义私有静态变量 通过公有方法访问 final class Singleton4: NSObject { private static let instance = Singleton4(); class func shareInstance() -> Singleton4 { return instance; } private override init() { print("Singleton4 初始化了一次") } }
观察以上不难发现,所有的类中我都添加了构造方法的私有化,这样是保证其他地方不能自己init,这也是因为Swift 3.0 废弃了dispatch_xxx之后的比较简单的方式来保证单例不能实例化的问题。
相关文章推荐
- Swift 实现单例模式Singleton pattern的三种方法
- Swift 实现单例模式Singleton pattern的三种方法
- Swift中如何实现自定义Debug模式下打印Log
- 深入理解Swift中单例模式的替换及Swift 3.0单例模式的实现
- Swift实现单例模式
- Swift学习第十一枪-基于协议的MVVM模式的实现
- Swift - 实现单例模式
- 【Swift】3种单例模式实现详解
- Swift 实现单例模式Singleton pattern的三种方法
- Swift语言之命令模式(Command Pattern)实现
- swift基础之实现单例模式(仿NSUserDefaults)
- Swift 实现单例模式Singleton pattern的三种方法
- Swift 实现单例模式Singleton pattern的三种方法
- [老码团队]Swift中的协议 - 用协议来实现委托模式
- Swift:夜间模式实现
- swift语言实现单例模式
- Swift实现OC中的单例模式
- swift实现单例模式
- 论坛源码推荐(6月27日):用Swift实现的游戏原型 iOS视图的Empty DataSet模式
- Swift实现OC中的单例模式