具有通用协议的 VIPER 架构
VIPER architecture with generic protocols
我有一个关于 VIPER 架构和泛型协议的有趣问题。
Presenter 和 Interactor 似乎有很多通信,(用于获取和接收数据),但 Interactor 的“输出”功能将始终相同
类似于:
func dataFetched(object: JSONObject)
如果你有 10 个模块,你将有 10 倍的这个功能,只有改变的 JSONObject...
是否可以使用类似
的东西
protocol Ouput {
associatedType Object
func dataFetched(object: Object)
}
并在演示者中选择对象类型?
如果 JSONObject 是一个 Entity presenter 应该不知道。相反,interactor 应该 return 可以转换为 ViewModel 的多态类型。然后演示者可以将此 ViewModel 传递给视图。因此交互器输出可能如下所示:
func didFetched(object: ViewModelConvertible)
我有一个关于 VIPER 架构和泛型协议的有趣问题。
Presenter 和 Interactor 似乎有很多通信,(用于获取和接收数据),但 Interactor 的“输出”功能将始终相同
类似于:
func dataFetched(object: JSONObject)
如果你有 10 个模块,你将有 10 倍的这个功能,只有改变的 JSONObject...
是否可以使用类似
的东西protocol Ouput {
associatedType Object
func dataFetched(object: Object)
}
并在演示者中选择对象类型?
如果 JSONObject 是一个 Entity presenter 应该不知道。相反,interactor 应该 return 可以转换为 ViewModel 的多态类型。然后演示者可以将此 ViewModel 传递给视图。因此交互器输出可能如下所示:
func didFetched(object: ViewModelConvertible)