swift - 使用单例模式在 Swift 中创建管理器的最佳方法
问题描述
我在我们的应用程序中有两个简单管理器的示例。
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
重点展示我们如何隐藏共享实例,但使用相同的单例模式
那么,问题是,示例中用例的最佳性能/方法是什么?
解决方案
推荐阅读
- flutter - 如何在颤动中使用富文本实现对齐中心
- python - Python 2 到 Python 3 的转换:在 pyz 中找不到 __main__ 模块
- c# - 如何显示列表
在数据表中水平? - eclipse - 我可以阻止 STM32CubeIDE (Eclipse) 自动将文件添加到项目吗?
- javascript - 从文件加载人脸时face-js不匹配
- qt - 设置内容方向会改变弹出窗口出现时的变暗效果
- python - 在不同的文件上调用 Tkinter GUI 框架类
- sql-server - 如何在 SQL Server 中添加分数?
- kubernetes - 使用远程呈现在 K8S pod 中调试 java 应用程序
- azure-monitoring - Azure 中的 Azure Sentinel 替代方案