MVP: V 层处理 UI 视图操作;P 层实现业务逻辑操作(有设计需要的时候,核心业务甚至可以写到一个核心的 P 里面去);M 层为数据仓库,后台管理数据来源与数据控制,数据是来自网络、数据库、SP、缓存,示例:你可能会需要这样一个实现,一个数据列表,不需要实时性,但是需要给网络情况有问题时的用户提升用户体验,需要使用网络数据 + 本地缓存数据机制,那么,都可以统一在这个数据仓库做处理,代码逻辑层次很清晰,你应该会喜欢上这个设计。 V-P 之间的调用方式采取依赖倒置原则,俗话就是使用抽象接口(回调);P 与 V,代码写多了,其实会发现,V 可以正常的调用 P,P 则要尽量少调用 V,或者使用 DataBinding,数据的变化使用绑定方式;P 与 M,M 只与 P 做沟通,数据一般来自后台延时操作,这块也就是使用 RxJava 情况较多的地方,网络请求可以尝试使用 ReTrofit。一般情况下,一个 V 对应一个 P,而 P 和 M,会出现一个 P 对应多个 M 的情况(M 的接口多了,或许会把 M 按模块创建)。