假设我有一个Car
对象,其中包含颜色,型号,品牌和座位数等标准属性。
我的应用程序中的每个视图控制器都负责获取每个属性直到结束:
彩色视图控制器 - >模型视图控制器 - >品牌视图控制器 - >座椅控制器 - >结果控制器
我现在在每个控制器之间传递数据的方式是通过Singleton,但我在网上看到的是反模式并且稍后会产生很多耦合。那么问题是:我将所有数据汇集到Result Controller
的最佳方式是什么?
答案 0 :(得分:0)
尝试将您的单身人士修改为服务。
例如:您的单身StateManager
有两种方法:set(state: SomeState)
和getState() -> State
。
首先,使用协议:
protocol StateManager: class {
func set(state: SomeState)
func getStatus() -> SomeState
}
其次,你的app模块不应该知道他们使用的女巫StateManager
:
class MyAppController: UIViewController {
var stateManager: StateManager?
...
}
当你启动VC时:
let vc = MyAppController()
vc.stateManager = ConcreteStateManager.sharedInstance
//present vc
如果您有创建VC的集中位置,则可以在其中保留ConcreteStateManager
的实例,而无需调用sharedInstance
。
另外,请阅读swift中的依赖注入。