具有通用协议的 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)