MVP全称Model-View-Presenter
结构图如下:
MVP模式的三个角色
1.Presenter—-交互中间人
Presenter主要作为沟通View和Model的桥梁,它从Model层检索数据后,返回给View层,使得View和Model之间没有耦合,也将业务逻辑从View角色上抽离出来
2.View—-用户界面
View通常是指Activity,Fragment或者某个View控件,它含有一个Presenter成员变量。通常View需要实现一个逻辑接口,将View上的操作转交给Presenter实现,最后Presenter调用View逻辑接口将结构返回给View元素。
3.Model—-数据的存储
Model角色主要是提供数据的存取功能。Presenter需要通过Model层存储。获取数据,Model就想一个数据仓库。更直白的说,Model是封装数据库DAO或者网络获取数据的角色,或者两种数据获取方式的集合
MVP能够有效地降低View复杂性,避免业务逻辑被塞进View中。MVP模式会解除View与Model的耦合,同时又带来了良好的可扩展性、可测试性,保证了系统的整洁性。灵活性。
MVP模式可以分离显示层和逻辑层,它们之间通过接口进行通信,降低耦合。理想化的MVP模式可以实现同一份逻辑代码搭配不同的界面显示,他们它们之间不依赖具体,而是依赖抽象
与MVC的区别
MVC特点
1.用户可以向View发送指令,再由View直接要求Model改变状态
2.用户也可以直接向Controller发送指令,再由Controller发送给View
3.Controller起到事件路由的作用,同时业务逻辑都部署在Contriller中
可以看到,MVC的耦合性还是相对较高,View可以直接访问Model,导致三者之间构成回路。因此,MVP与MVC的主要区别是,MVP中的View不能直接访问Model,需要通过Presenter发出请求,View与Model不直接通信