在我们的应用程序中,有两个简单管理器的例子。
enum SomeStatus {
case none
case inProgress
}
class SomeManager {
static let shared = SomeManager()
private var _status: SomeStatus = .none
var status: SomeStatus {
get { return _status }
}
func changeStatus(to status: SomeStatus) {
_status = status
}
}
let manager = SomeManager.shared
print (manager.status)
// none
manager.changeStatus(to: .inProgress)
print (manager.status)
// inProgress
在此示例中,我隐藏了通过直接分配状态变量在经理外部更改状态的可能性。总之看起来不错。
但是我们可以用另一种方式做
class SomeManager {
private static let shared = SomeManager()
private var _status: SomeStatus = .none
static var status: SomeStatus {
get { return shared._status }
}
static func changeStatus(to status: SomeStatus) {
shared._status = status
}
}
print (SomeManager.status)
// none
SomeManager.changeStatus(to: .inProgress)
print (SomeManager.status)
// inProgress
展示我们如何完全隐藏共享实例,但使用相同的单例模式的点
因此,问题是,示例中使用案例的最佳性能/方法是什么?