过滤交互器结果的最干净的方法
The cleanest way of filtering Interactors result
我正在尝试在我的应用程序中实现干净的架构。
我有 LoadItemsInteractor
从存储库加载所有项目,还有 LoadItemsByIdInteractor
按 id 加载项目。
我有一个方法,可以过滤收到的项目,并且两个交互者共享它。我想知道我应该把这段代码放在哪里。选项:
Utils
class 使用静态方法 filter
,两个交互者在将值返回给演示者之前调用它
- 创建实现
filter
方法的抽象 BaseLoadItemsInteractor
并从中继承两个交互器。
- 创建
FilterItemsInteractor
并传递 LoadItemsInteractor
和 LoadItemsByIdInteractor
执行的结果(来自演示者或内部具体交互器)。
最简洁的实现方式是什么?
你可以将这两个interactor统一为一个,通过filter把id和其他你要过滤的对象发送到repository,这样就省去了你重复的代码。最后loadItems是use case,byId是filter,将id加到filter中,将interactor统一为一个。
从某个数据存储中简单加载某些内容属于接口适配器的范畴,通常称为存储库。您应用于加载数据的所有逻辑都属于交互器。如前所述,如果不违反 SRP,交互器可以有多种方法。
我正在尝试在我的应用程序中实现干净的架构。
我有 LoadItemsInteractor
从存储库加载所有项目,还有 LoadItemsByIdInteractor
按 id 加载项目。
我有一个方法,可以过滤收到的项目,并且两个交互者共享它。我想知道我应该把这段代码放在哪里。选项:
Utils
class 使用静态方法filter
,两个交互者在将值返回给演示者之前调用它- 创建实现
filter
方法的抽象BaseLoadItemsInteractor
并从中继承两个交互器。 - 创建
FilterItemsInteractor
并传递LoadItemsInteractor
和LoadItemsByIdInteractor
执行的结果(来自演示者或内部具体交互器)。
最简洁的实现方式是什么?
你可以将这两个interactor统一为一个,通过filter把id和其他你要过滤的对象发送到repository,这样就省去了你重复的代码。最后loadItems是use case,byId是filter,将id加到filter中,将interactor统一为一个。
从某个数据存储中简单加载某些内容属于接口适配器的范畴,通常称为存储库。您应用于加载数据的所有逻辑都属于交互器。如前所述,如果不违反 SRP,交互器可以有多种方法。