Swift:重构单例模式
我有一个Swift:重构单例模式,swift,singleton,Swift,Singleton,我有一个Swiftsingleton类,它通过存储几个数组来维护应用程序状态。这里的最佳做法是什么?我们应该改变它吗?如果我们改变了,怎么改变 以下是singleton类: import Foundation class FilterModel { static let sharedInstance = FilterModel() private init() { } var muscleExercisesArray = [Int]() var equipmentExerc
Swift
singleton类,它通过存储几个数组来维护应用程序状态。这里的最佳做法是什么?我们应该改变它吗?如果我们改变了,怎么改变
以下是singleton类:
import Foundation
class FilterModel {
static let sharedInstance = FilterModel()
private init() { }
var muscleExercisesArray = [Int]()
var equipmentExercisesArray = [Int]()
var typeExercisesArray = [Int]()
}
如果您想了解基本的单例模式,请注意以下几点:
final
,以避免将来的开发人员将其子类化,并对sharedInstance
引用的类型造成混淆sharedInstance
的名称简化为shared
。这不是一条硬性规定,而是新兴标准你说:
单例被认为是应用程序架构的一种糟糕方法,所以我想知道当我们需要维护应用程序状态时,应该做什么来代替它。不知何故,我在网上找不到任何东西,除了DI方法在这种情况下不起作用(或者我不知道如何),当我们需要通过不同的文件修改应用程序状态时
是的,由于许多原因(使单元测试更加困难;使职责不明确等),单例不适合用于模型对象,并且有更好的模式(请参阅)。至少,一种简单的方法是让app delegate或根视图控制器实例化此模型对象,然后只将其传递给需要访问它的任何后续控制器(例如,在
prepareforsgue
)。通过这种方式,可以明确哪些对象可能与模型交互,从而使职责更加明确。添加NSCoding以便可以在应用程序启动之间持久化数据。单例被认为是应用程序体系结构的一种糟糕方法,因此我想知道当我们需要维护应用程序状态时,如何替代它。不知何故,我在网上找不到任何东西,除了DI方法不起作用(或者我不知道如何),在这种情况下,当我们需要用不同的文件修改应用程序状态时。哈,明白了。非常感谢。