You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MVP架构中Model归属咨询:属于Presentation Layer还是Domain Layer?

这个问题其实挺容易混淆的,核心是因为MVP的定义本身和它与Clean Architecture结合后的变体带来了不同语境,并非哪一种说法绝对正确,得看具体讨论的场景:

1. 传统MVP中的Model:属于表现层

传统MVP是专门为表现层解耦设计的架构,它的核心是把UI(View)和业务逻辑(Presenter)分开,而这里的Model本质上是为Presenter提供UI所需数据的“数据提供者”——比如封装本地SharedPreferences、网络API请求、数据库查询的类,这些都是和当前页面的UI需求强绑定的。这种情况下,MVP整个都是在表现层范围内的,Model自然属于表现层,这也是很多早期Android MVP教程的观点。

2. 结合Clean Architecture后的MVP:Model属于领域层

当MVP和Clean Architecture结合后,这里的“Model”概念就变了。Clean Architecture把整个应用分成了领域层、数据层、表现层,这时候人们说的“Model”通常指领域层的核心实体(Entities)和业务用例(Use Cases)——这些是整个应用的业务核心,不依赖任何外层(包括表现层)。而表现层的Presenter会依赖领域层的Model来获取业务数据,表现层自己可能会有数据层的实现(比如Repository),但这时候它不会被叫做Model了。这种场景下的说法,其实是把Clean Architecture的分层术语和MVP结合了,所以会说Model属于领域层。

总结

简单来说:

  • 如果讨论的是纯表现层的MVP(只解决UI和逻辑分离),Model属于表现层;
  • 如果讨论的是结合了Clean Architecture的MVP(关注整个应用的分层架构),这里的Model指领域层的核心,属于领域层。

内容的提问来源于stack exchange,提问作者metis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:36:54