VIPER模块依赖性

时间:2018-07-12 09:35:39

标签: ios swift architecture viper interactors

我一直在从事个人项目,以便更好地了解VIPER架构。我真的很喜欢我可以将模块分开以使代码更整洁的方式。

关于模块依赖项,我仍然有一些疑问:

我有一个模块负责根据用户数据显示一些统计数据,而另一个模块负责根据统计数据显示一些数据预测。

然后,我的ProjectionsInteractor需要从StatisticsInteractor中获取一些数据,因为我不想两次重新实现相同的东西。

我已经有一个DataManager层,基本上是CoreDataManager,但是那里没有任何逻辑。交互器仅使用它来检索和处理一些数据,而无需了解有关持久性细节的任何信息。

1 个答案:

答案 0 :(得分:0)

  • 如果共性本质上是应用域业务规则,则将共性排除在外,将其移至演示者区域,所有应用域业务规则都将存放在 VIPER 架构中。
  • 但是,如果共性本质上是以交互者为中心的,那么您不必让一个交互者调用另一个交互者的方法,而是将交互者之间的共性分解到交互者区域内的一个库中,多个交互者将调用该库。该库可以采用多种形式:实用程序层(来自更传统的时代)或交互者的协议,需要从其继承共性。

TL;DR:排除共性。将分解出的共性放在哪里取决于共性是什么主题/特征。