【问题标题】:The cleanest way of filtering Interactors result过滤交互器结果的最干净的方法
【发布时间】:2017-07-05 09:01:43
【问题描述】:

我正在尝试在我的应用程序中实现干净的架构。 我有LoadItemsInteractor 从存储库加载所有项目,我还有LoadItemsByIdInteractor 按ID 加载项目。

我有一个过滤接收到的项目的方法,并且两个交互者共享它。我想知道我应该把这段代码放在哪里。选项:

  • Utils 具有静态方法 filter 的类,两个交互者都会在将值返回给演示者之前调用它
  • 创建实现filter 方法的抽象BaseLoadItemsInteractor 并从中继承两个交互器。
  • 创建FilterItemsInteractor 并传递LoadItemsInteractorLoadItemsByIdInteractor 执行的结果(从演示者或具体交互器内部)。

什么是最简洁的实现方式?

【问题讨论】:

  • 在我看来过滤和findById 属于存储库。我以前从未听说过包含“Interactor”的命名约定。交互器是业务逻辑/模型的实现细节吗?
  • @k3b 在某些来源上,它们被称为用例

标签: android mvp clean-architecture


【解决方案1】:

您可以将两个交互器统一为一个,并通过过滤器发送 id 和您要过滤的其余对象将其发送到存储库,从而节省您的重复代码。最后 loadItems 是用例,byId 是一个过滤器,它将 id 添加到过滤器中,并将交互器统一为一个。

【讨论】:

    【解决方案2】:

    从一些数据存储中简单地加载某些东西属于接口适配器的圈子,通常称为存储库。您应用于加载数据的所有逻辑都属于一个交互器。如前所述,如果不违反 SRP,Interactor 可以有多种方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-27
      • 2012-06-23
      • 2016-05-14
      • 1970-01-01
      • 2018-11-07
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多