一:概念
MVP:
Model:模型层,处理数据之类,如数据库操作,访问网络等。
View:视图层,xml布局文件及Activity、fragment。
Presenter:Presenter表示器(也称主持人),通过调用V、M层的接口来连接Model与View.
先了解一下MVC模式,MVC模式中Activity对应了MVC中的V和C,同时担任两个角色,会导致Activity过于复杂臃肿,因为MVC中是允许Model和View进行交互的. 例如在Activity中进行网络操作,得到数据后就设置在TextView中。
而MVP中很明显,Model与View之间的交互由Presenter完成。即在另一个类中执行访问网络的操作,得到数据后通过Pesenter类调用Activity的接口,这样Activity就获得了数据,然后再根据数据执行更新UI的操作。
Presenter与View之间,Presenter与Model之间的交互是通过接口的方式来进行的。简而言之即Model层与View层不直接交互,而是通过Presenter来处理。Model层声明接口、View层声明接口提供给Presenter调用来间接实现M层与V层的交互,Presenter也提供一些方法供View、Model层调用。
MVC、MVP模式区别如下图所示:
二:操作流程
(示例项目结构)
(示例:点击按钮获取天气信息,然后显示在TextView