Clean Architecture:分页逻辑(最多10页)应置于用例还是Presenter?
该分页控制逻辑应该放在Presenter层
嘿,这个问题得结合Clean Architecture的分层职责来拆解,咱们先理清楚各层的核心定位:
各层职责回顾
- UseCase层:核心是封装业务规则与用例逻辑,只关心「要做什么业务动作」(比如根据关键词获取搜索结果),不关心数据最终怎么展示,输出的是纯粹的业务数据。
- Presenter层:属于接口适配器层,负责衔接业务数据与UI,处理所有和UI展示相关的逻辑——比如把数据转换成UI能渲染的格式、控制加载状态、处理分页展示规则等。
为什么选Presenter层
你要的「最多展示10页结果」本质是UI展示层面的限制,而非业务规则限制:业务上你依然可以获取完整的搜索结果,但UI只需要呈现前10页。如果把这个限制放到UseCase里:
- 会把UI层的规则侵入到业务层,违背Clean Architecture「关注点分离」的核心原则;
- 以后如果UI需求变化(比如改成展示20页),你就得修改UseCase的代码,违反了「开闭原则」。
放到Presenter层的具体实现思路:
- 如果是一次性获取所有搜索结果:Presenter拿到UseCase返回的完整数据后,自行计算分页(比如每页固定条数,截取前10页对应的条目),再传递给Fragment展示;
- 如果是分页加载场景:Presenter控制调用UseCase的次数,最多触发10次分页请求,拿到10页数据后就停止后续请求。
为什么不选UseCase层
UseCase应该是独立于UI的纯业务组件,它的输出应该是完整的业务数据,让上层(Presenter)决定如何使用这些数据。把UI相关的分页限制放在这里,会让业务层和UI层耦合度变高,不利于后续的维护和扩展。
内容的提问来源于stack exchange,提问作者Mehmed
相关产品推荐
相关产品推荐

