我只知道UIApplication
被设计为单身模式。
但在实际项目中,单例模式是否在Swift中得到了很好的应用?
答案 0 :(得分:1)
你在开发人员洞穴中听到的一个常见短语是&#34;我知道单身人士很糟糕但是......&#34; ,似乎几乎已经达成共识,单身人士&#34;糟糕&#34; 但我们看到它们在应用程序和共享框架中的 Apple 和第三方开发者无处不在。< / p>
所以你可能会问为什么我们使用单身人士。我让你进去。
Apple使用它们!作为第三方开发者,我们期待苹果公司的最佳实践&#34;并且社区也普遍采用Apple使用的任何模式
<强>便利即可。单身人士允许您从任何地方访问对象
class LoginController: UIViewController {
let nameLabel = UILabel()
override func viewDidLoad() {
super.viewDidLoad()
nameLabel.text = ApiService.shared.user.name
}
private func handleLogoutButtonOnTap() {
ApiService.shared.logout()
}
}
使用ApiService单例检索用户对象并注销。我同意这很方便。
那么单身人士真是太糟糕了?
它们是一个全局可变的共享状态,当状态发生意外变化时可能出现错误,可能是由加入团队的新开发人员
单身人士与使用他们的代码之间的关系尚未明确界定
管理他们的生命周期可能很棘手。单身人士在整个应用程序期间都处于活跃状态。因此管理它们可能很难。这也使得编写代码测试变得很困难,因为在每种情况下都无法从干净的平台开始。
总之,关于单身人士的意见不一,我并不是说不会使用它们,但还有其他选择。
社区正在不再使用单身人士,而是倾向于Dependency Injection
。阅读它