Android 开发的两种框架 MVC和MVP 的简单分析

来源:互联网 发布:淘宝耐克篮球鞋正品店 编辑:程序博客网 时间:2024/05/16 11:48

在常见的android开发框架,有MVC和MVP两种,下面我来分别简单介绍一下。

一、MVC框架

MVC,即model(模型),view(视图),controler(控制器)三个单词的简称。

其中Model的任务是:完成任务逻辑,耗时操作等核心功能。eg:网络连接的发送请求和获取数据,读取数据库数据,耗时的循环操作。

View的任务是:数据的显示,完成和用户的交互。

Controler的任务是:作为Model和View的中间环节,从Model 中获取数据,传递到View显示给用户。

在android中,使用MVC时,V层是Xml文件,负责界面的排版,数据的呈现,C层是Activity,Activity的功能是获取获取xml的控件,把M层得到的数据显示出来,

M层则是我们自己写的各种工具类,实现具体功能的类。

MVC在J2EE和android 开发应用是很多的,它将业务逻辑和界面分离开来,通过controler进行连接,从而达到很好地解耦效果。


二、MVP框架

上面说到MVC框架,既然MVC框架应用那么多,也有很好的解耦作用,那为什么还需要MVP框架呢,因为MVC框架中还是存在一定的局限性,前面说过,在android开发中,C层是由Activity担任的,但是在C层中,V层的视图资源是绑定在C层当中的,就是说C和V并不是完全分离的。因为在做一个比较大型的项目的时候,你会发现,C层的Activity或者Fragment会变得越来越庞大。这时候使用MVP框架会比较好。

MVP框架就是从经典的MVC框架演变过来的,基本思路相同。

MVP就是 Model(模型),View(视图),Presenter(控制着)的简写。其中Model和View的功能和MVC一样,Presenter相当于MVC的Controler,是M层和V层的桥梁。

那么MVC和MVP有什么不同呢?

在android开发中,在MVC框架中,我们把Activity视为C层,但是在MVP框架中,我们把Activity视为V层,因为在MVC框架模式中,Activity和View关系紧密,Activity中包含大量的View视图显示代码。如果后期修改的时候要修改View视图显示,那么相应的Activity中也会修改大量代码。

在MVP框架模型中,View和Model并不直接交互。而是通过Presenter作为View和Model的桥梁。其中Presenter中同时持有View层和Model层的Interface的引用,而View层持有Presenter层的引用。当View层某个界面需要展示某些数据的时候,首先会调用Presenter层的某个接口,然后Presenter层会调用Model层请求数据,当Model层数据加载成功后会调用Presenter的回调方法通知Presenter层数据加载完毕,最后Presenter层再调用View层的接口将加载的数据展示给用户。这就MVP框架的的整个核心过程。






这样分层的好处就是大大的减少了Model和View层之间的耦合度。一方面可以使得View层和Model层单独开发与测试,互不依赖。另一方面可以封装复用,可以极大地减少代码量。



总结: MVP框架模式完全将Model模型和View师徒分离,从而使得代码的耦合度低,利用MVP框架写项目达到解耦作用。MVP和MVC最大的区别是:MVC中V和C的关系比较紧密,耦合度太高,从C中访问M获取数据一定程度上也可以看成从V中访问M。而MVP中M和V完全分离,互相不知道对方的存在,Presenter通过接口通信凡是将V和M通信。在Android中MVP框架Activity担当View视图层,MVC框架中Activity担任控制器。


虽然MVP框架可以达到很好的解耦效果,可是在开发过程当中需要多些一层(Presenter)的代码,代码量会扩大,而且业务逻辑对不太熟悉的开发者来说还是略显复杂,因此建议如果开发相对较小的项目,而且项目不需要频繁的修改可以选用MVC,如果开发比较大的项目,而且需要后期经常修改的话建议使用MVP框架模式开发。

本文转载自 :http://blog.csdn.net/gjnm820/article/details/51733361


1 0
原创粉丝点击