单利在开发中是一个很流行的设计模式,很多的开发者使用这一设计模式。这是非常简单、常见且易于使用在项目中。
它使用静态属性初始化类实例,是具有全局共享类实例
我们已经多次使用苹果的基础APIs,比如UserDefaults.standard,FileManager.default等类似的单例类模式。
1, 下面是一个使用类的简单示例:
class LocationManager{
//MARK: - 请求获取位置
func requestForLocation(){
print("Location granted")
}
}
//使用
let location = LocationManager() //初始化
location.requestForLocation() //调用方法 requestForLocation()
这是一个没有使用单利模式的类,用于访问任何我们需要初始化类的函数,以避免我们使用静态实例的单利类。
2, 编写第一个单例类
class LocationManager {
//静态实例
static let shared = LocationManager()
//测试变量
var locationGranted: Bool?
//私有化初始化方法
private init(){}
//MARK: - 请求获取位置
func requestForLocation() {
locationGranted = true
print("获取位置")
}
}
一行代码使用单利类方法
LocationManager.shared.locationGranted()
[图片上传失败...(image-2764e1-1523958238623)]
每个类都有默认的公共初始化方法,它现在变成私有的。现在不能再在外部初始化你的单例类。
如何使用单例
//使用简单
LocationManager.shared.requestForLocation() // 获取位置
//使用变量值
print(LocationManager.shared.locationGranted ?? false) // true