MVP是在MVC的基础上发展过来的实现了M层和V层完全分离进一步解耦
Model:数据来源 请求网络数据和数据库
View:对应xml布局文件和动态布局部分,对应Activity
Presenter:逻辑控制部分 通过接口连接M层和V层 白话相当于中介
优点:
V层对应Activity,只负责UI的展示和P层直接通信,和M数据层没有任何交互。
V层没有和M层有交互,可以抽成单独的组件,方便复用。
代码结构清晰,P逻辑层可以用于多个视图,而不需要改变P层的逻辑。
V层和M层完全分离,方便协同工作,只需要专注做视图或者逻辑控制部分,不用关系对方的逻辑。比如负责逻辑控制部分不用等设计出图就可以直接写代码并进行单元测试
复用率高
缺点:M层和V层都需要和P层进行通许,会导致P层代码很复杂,而且都是通过接口通讯,如果一个P层用于多个Activity,所有Activity都要实现全部都接口,无论能不能用得到。修改P层接口,往往会涉及到很多个界面,很麻烦。
P层和V层通过接口通讯,会持有View的引用,容易造成内存泄露。
随着业务增多,P层即使只对应一个视图,接口也会越来越多。