Singleton模式在Swift中使用得很好吗?

时间:2017-11-30 08:16:19

标签: ios swift singleton

我只知道UIApplication被设计为单身模式。 但在实际项目中,单例模式是否在Swift中得到了很好的应用?

1 个答案:

答案 0 :(得分:1)

你在开发人员洞穴中听到的一个常见短语是&#34;我知道单身人士很糟糕但是......&#34; ,似乎几乎已经达成共识,单身人士&#34;糟糕&#34; 但我们看到它们在应用程序和共享框架中的 Apple 第三方开发者无处不在。< / p>

所以你可能会问为什么我们使用单身人士。我让你进去。

  1. Apple使用它们!作为第三方开发者,我们期待苹果公司的最佳实践&#34;并且社区也普遍采用Apple使用的任何模式

  2. <强>便利即可。单身人士允许您从任何地方访问对象

     class LoginController: UIViewController {
          let nameLabel = UILabel()
    
      override func viewDidLoad() {
          super.viewDidLoad()
          nameLabel.text = ApiService.shared.user.name
         }
    
       private func handleLogoutButtonOnTap() {
            ApiService.shared.logout()
         }
     }
    
  3. 使用ApiService单例检索用户对象并注销。我同意这很方便。

    那么单身人士真是太糟糕了?

    1. 它们是一个全局可变的共享状态,当状态发生意外变化时可能出现错误,可能是由加入团队的新开发人员

    2. 单身人士与使用他们的代码之间的关系尚未明确界定

    3. 管理他们的生命周期可能很棘手。单身人士在整个应用程序期间都处于活跃状态。因此管理它们可能很难。这也使得编写代码测试变得很困难,因为在每种情况下都无法从干净的平台开始。

    4. 总之,关于单身人士的意见不一,我并不是说不会使用它们,但还有其他选择。

      社区正在不再使用单身人士,而是倾向于Dependency Injection。阅读它