使用Singleton模式在Swift中创建管理器的最佳方法

时间:2018-07-10 07:09:24

标签: swift swift3 singleton

在我们的应用程序中,有两个简单管理器的例子。

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

展示我们如何完全隐藏共享实例,但使用相同的单例模式的点

因此,问题是,示例中使用案例的最佳性能/方法是什么?

0 个答案:

没有答案