1

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

当谈到模块依赖时,我仍然有一些疑问:

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

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

我已经有一个 DataManager 层,基本上是一个 CoreDataManager,但那里没有任何逻辑。它只是被交互者用来检索和操作一些数据,而不知道关于持久性细节的任何事情。

我应该把从多个交互者中提取出来的共性放在哪里?这有什么不同吗:

  • 共性是否与交互器的核心{数据存储、网络、传感器}数据采集/存储目的相关
  • 共性是否与要对从 {data-store、networking、sensors} 获取的数据执行的业务规则有关?
4

1 回答 1

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

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

于 2021-05-01T18:08:03.640 回答