【问题标题】:Clean Architecture: Where to implement pagination logic?清洁架构:在哪里实现分页逻辑?
【发布时间】:2018-01-20 12:34:50
【问题描述】:
有一个 REST API,其中用户输入的搜索关键字用于查询和获取结果。有时,返回的结果太多。我不想在服务器端设置最大结果限制,所以我想在应用程序上处理它。在应用程序中,我尝试关注Clean Architecture。我有一个片段、一个演示者、一个用例和一个 API 客户端。用户输入关键字,按下搜索按钮,关键字通过presenter传递给相关用例函数。 Usecase 从 API 客户端获取结果并通过侦听器将结果传递给 Presenter。 Presenter 通知 Fragment 以便显示结果。
我想显示最多十页的结果。我应该把这个控件放在哪里?用例还是演示者?
【问题讨论】:
标签:
android
mvp
clean-architecture
【解决方案1】:
如果您总是严格地将其设为十页,请将其放在您的用例中,因为这里存在应用程序业务规则。因此,如果您总是要通过十个,则不需要通过它。
但是,我建议将其设置为 presenter 上的 parameter,以使其灵活,因为您可能会遇到需要调整最大页数的场景具体activity/fragment。
【解决方案2】:
分页是您域的一部分吗?如果不是,您可能希望有一个单独的查询界面/流程。使用域存储库进行基于写入的操作。加载实体,更新,保存。对于查询有一个不同的接口,可以启用查询和过滤操作。用户案例仍然存在。输入仍然有参数,但您的域存储库 api 是干净的。您甚至可以让相同的数据库类实现您的查询 api。