Android中MVP模式(一)
1、什么是 MVP模式?
同 MVC一样,是一种编程模式和思想,是一种架构。
2、MVP和MVC。
M:Model,代表业务数据。
V:View,代表视图
C:Controller,代表控制器
用户通过界面操作 View,相应的动作传递给 Controller层,而 C层根据业务逻辑操作 Model层,而最终 M层变化同步更新到视图层。
3、Android中的 MVC
Activity对应的视图界面就是 View层;
数据库文件,Sharedprefrence,内存缓冲,磁盘缓冲等数据内容对应 Model层。
C层基本由 Activity层面进行。
4、Android中 mvc基本动作流程
1,layout制定相应的布局文件,然后显示在 Activity上,用于显示天气信息。对应于 View层,这里的 View并不是 Android开发中组件的 view而是对视图的统称。
2、Activity在 onCreate()或者 onResume()去服务器获取数据,或者通过界面上的某按钮去启动获取数据的任务,这里就对应到 View->Controller,只不过 View和 Controller是由 Activity完成。
3、C层获得数据后,分别存在内存、磁盘和数据库中,并且数据获取成功或者失败后,Activity界面需要同步更新状态。
4、MVP的出现
因为 Activity对应了 MVC模式中的 V和C,代码臃肿,所以出现了 MVP模式。
Model:M层负责数据。
View:V层负责 Activity上的布局。
Presenter:P层负责中间纽带。
MVP开发在 Android中的基本流程:
1、View层定义 View.interface,用来定义 View的行为。一般由 Activity或者 Fragment来实现这个接口,定义了 View视图的各种变化,如设置Textview,加载对话框,更新进度条等。
2、Model层定义 Model.interface,用来定义数据层发生变化时的通知接口,因为 M不能与C直接交互,所以它与 Presenter交互,然后通过 Presenter间接达到与 View交互。
3、Presenter负责具体 业务逻辑,请求数据,把数据送到 Model,或者监听 Model的数据变化,接受 View层的动作,负责通知 View层的视图变化。
5、MVP与MVC的重要区别:
MVC中 Model、VIew、Controller之间互相通信。
MVP:Model与Presenter通信,View与Presenter通信,而Model与View之间没有通信。
MVC开发模式中,分工每个人负责相应的 Activity,再后来某 Activity变得越来越重要,代码越来越多,会造成某个人的开发任务中间,并且其他人帮不上忙。
MVP则可以将 Activity细分,分为 View和 Presenter两部分,让一人开发 View,另一人负责 Presenter部分。并且 V的变动对P影响不大,越复杂优势越大。