浅谈MVC、MVP

标签: MVC和MVP区别 MVC和MVP应用 MVC和MVP两者怎么使用 MVC和MVP取舍
18人阅读 评论(0) 收藏 举报
分类:

从名称上来看mvc分别是model view controller而mvp是model view presenter,首先两者最大的区别就是到底是谁去渲染布局数据,我们都知道展示界面数据有几个步骤,读取xml渲染界面,请求网络等到数据,把网络数据渲染到布局文件上展示出来,在这个几个步骤中两种框架大不相同 。


两者的区别:

   android中展示界面最重要的就是activity,然后由他去读取xml渲染布局;而Activity在MVP中是View层,在MVC中是Controller层,这是MVC和MVP很主要的一个区别。

    在view层的定义中,mvc中的view指的是xml中的我们常说的控件,而在上边我说过的mvp中的V层则是   activity或者是fragment等。

    控制层的定义,在mvc中顾名思义,C层就是控制层,也就是activity 、fragment等类,他们负责请求数据过来之后渲染布局,发送handler,改变UI等等等等动作,显而易见mvcC层代码两会有很多很多。然而mvp中P层则是控制层,在这一层中不需要做和渲染布局无关的事情,也就是说,在P层中我们可以拿到两个引用对象,M层和V层的两个对象,然后直接对其渲染数据。

    下一个区别,也可以算作根本上的区别,MVC中moudel和view层可以直接交互,什么渲染布局,拿到对象,拿到数据等。而MVP中,这两个层是不可以直接交互的需要通过P层也就是控制层去作为一个纽带,传输这些数据,处理这些数据。这样也就降低了两者的耦合性 。

    下边来说一下代码量的区别,mvc中,综上所述也都明白了在activity中代码量超级多,也就是控制层代码量太多,耦合性超级差, 牵一发而动全身,改动一个小的布局就要去处理两个层中的东西 。而mvp中activity只需要去初始化控件拿到P层的引用,然后去调用相应接口的方法并传入相应的布局对象,然P层去处理即可,但是当你真正使用的时候你会发现一个问题,几乎每一个界面都要出一个P层去控制单独界面,虽然相同界面相同逻辑可以共用,但是这样会导致P层类很多,也就是说会有很多的P类出现,这个也是MVP的一个弊端。

    使用方法,这也是最关心的区别,在mvc中很简单,在activity中定义方法,在本类中或者别的类中拿到引用,直接调用;而在mvp中则是,在P层中定义一个P的接口 ,然后定义接口方法,然后在V层中去创建并实现方法。

这里借用下别家的mvp项目结构,大家一看就明白了:


两者的优点和弊端:

    1,上边提到的一个MVC中C层代码处理过多,一个MVP中P类过多 ;

    2,MVC耦合性太强,MVP很好的解耦;

    3,测试,MVC单元测试成本太高,MVP可以简单的进行单元测试

    4,代码的复用性,MVC中代码复用几乎只存在于复制粘贴,MVP中代码的复用是复用P层代码,相同逻辑可以共用一个P层代码 ;

    5,维护,mvc中代码维护起来很麻烦 ,上前行代码 ,两个星期之后获取你就不知道当时是怎样处理的了,还有些人不喜欢写注释,这样读起来很费劲,但是MVP的话,在框架中分工就是很明确的,所以代码的可读性就会相对提高一点 。

    以上就是我个人的一点小小的见解,如果有分歧和建议请留言谢谢~





查看评论

Android MVP实践

2017年Android移动开发市场,已经不是懂得几个UI控件使用,知道Android基本的原理就可以找到满意的工作了。对Android开发者提出了更高的要求,如,主流第三方库使用以及MVP对模式的理解运用,并且需要有代码重构的经验。本课程是作者在实际工作中总结,结合项目层层讲解如何使用MVP模式重构代码。
  • 2017年04月21日 12:01

浅谈MVC,MVP,MVVM区别与联系

转载请标明出处:http://blog.csdn.net/donkor_/article/details/54970769 前言: 开年来第一篇文章。首先,过年之后就是风风火火的金三银四跳槽季。按...
  • donkor_
  • donkor_
  • 2017-02-10 17:47:53
  • 748

浅谈mvc、mvp、mvvm框架模式

背景:随着软件工业的发展,复杂的软件没有清晰合理的架构,很难开发和维护,于是出现了MVC框架模式。 一、MVC 简介:MVC,是模型(model)-视图(view)-控制器(controlle...
  • spring5530
  • spring5530
  • 2017-03-25 22:39:06
  • 531

浅谈Android中MVC、MVP、MVVM模式(一)

一、MVC模式在Android中的体现     MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。 ...
  • CT_forever
  • CT_forever
  • 2016-09-09 16:47:40
  • 487

android中MVC,MVP和MVVM三种模式详解析

我们都知道,android本身就采用了MVC模式,model层数据源层我们就不说了,至于view层即通过xml来体现,而 controller层的角色一般是由activity来担当的。虽然我们项目用到...
  • u013320868
  • u013320868
  • 2016-08-11 11:36:23
  • 1096

浅谈Android中的MVC与MVP模式

使用MVC或者MVP模式会增加很多的类,但是确可以让代码结构变得清晰,方便了后期维护拓展方便。把数据层跟视图层分离,处理事务的逻辑单独的放在一个类中,让Activity仅仅具有展示功能。 下面我们就M...
  • a516972602
  • a516972602
  • 2016-05-10 11:45:10
  • 2507

三大开发模式的介绍(MVC、MVVM、MVP)

一.MVC:Model - View - Controller 特点:各部分循环传递 1.view接收到用户请求,发送指令到Controller 2.Controller完成业务逻辑之后,要求Mo...
  • zhenhanhong_tony
  • zhenhanhong_tony
  • 2016-09-30 10:16:34
  • 237

关于MVC,MVP,MVVM的一点总结和思考

简介软件的架构方式有很多种,从最开始的MVC模式,演化到MVP,然后到现在的MVVM,在不断的演化过程中其核心的思想就是降低各组件之间的耦合度,使得数据的流向更加的清晰明了。但并不是意味着一个比另一个...
  • wqc_CSDN
  • wqc_CSDN
  • 2016-12-27 16:43:27
  • 2438

【框架篇】mvc、mvp、mvvm使用关系总结

MVC MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的...
  • hudan2714
  • hudan2714
  • 2016-03-27 10:04:21
  • 13599

浅谈开发中的MVVM模式及与MVP和MVC的区别

我记得前段时间分享了一篇文章《 浅谈Andorid开发中的MVP模式》,反响不错,为了进一步介绍MVVM模式,还提前分享了实现Android中MVVM模式的一个关键技术的文章《Android 数据绑定...
  • zzqhappy025
  • zzqhappy025
  • 2017-02-10 15:53:53
  • 2785
    个人资料
    等级:
    访问量: 1822
    积分: 167
    排名: 107万+
    文章分类