干净的架构:在哪里实现分页逻辑?

Clean Architecture: Where to implement pagination logic?

有一个REST API,用户输入的搜索关键字用于查询和获取结果。有时,返回的结果太多。我不想在服务器端设置最大结果限制,所以我想在应用程序上处理它。在应用程序中,我尝试遵循 Clean Architecture。我有一个片段、一个演示者、一个用例和一个 API 客户端。用户输入关键字,按下搜索按钮,关键字通过presenter传递给相关用例函数。 Usecase 从 API 客户端获取结果,并通过监听器将结果传递给演示者。 Presenter 通知片段以便显示结果。

我想显示最多十页的结果。我应该把这个控件放在哪里?用例还是演示者?

如果您始终严格将其设为 10 页,请将其放在您的 usecase 中,因为此处存在应用程序业务规则。所以如果你总是要通过十,你就不需要通过它。

但是,我建议将其作为 presenter 上的 parameter,以使其灵活,因为也许您会遇到想要的场景调整特定 activity/fragment.

的最大页数

分页是您域的一部分吗?如果不是,您可能需要一个单独的查询 interface/flow。使用域存储库进行基于写入的操作。加载实体、更新、保存。对于查询有一个不同的接口,可以启用查询和过滤操作。用户案例仍然存在。输入仍然有参数,但您的域存储库 api 是干净的。您甚至可以让相同的数据库 class 实现您的查询 api.