MVC与MVP(仅限个人的理解)

原创 2018年04月17日 11:28:22




MVC的层次

MVC分为:Model(数据抽象)、View(视图)、Controller(控制器)的三层架构。接下来我们分别来一一解析每一层所对应的职责分别是什么。

  • View层:对应的则是Android中的layout文件夹中的xml文件,在启动Activity/Fragment的时候,都会加载一个R.layout.xxx的布局文件,使得在视图中显示出我们在xml中定义好的视图。

  • Controller层:对应的则是Activity/Fragment。当Activity/Fragment加载了layout文件后,我们需要在Activity/Fragment中findViewById(int)去寻找到相对应的view,并对找到的view设置相应的属性以及监听器。而在设置view的属性之前,我们很有可能会先到model中请求一次数据,当数据回调回来后controller就会去更新view了。

  • Model层:对应的则是一些DataSource以及DataBean的相关对象,这里的DataSource指的是数据的来源。一般数据的来源有2个主要的地方,一个是sqlite,一个是webservice,而我们习惯于将这两种数据的来源封装在一个repository中,对于调用者而言只需要调用repository中的一个获取接口来获取数据,但是这个数据是从内存中还是sqlite还是webservice来,我们都不得而知,从保护了调用实现的逻辑,分解相关的实现,达到调用者的极度简单与简洁,且在单元测试中测试接口也是非常方便的。

做个比喻吧,    Activity           Window            View

                        窗框(窗架)         玻璃               玻璃上的窗花 


优点与缺点

优点:
     逻辑清晰,Controller层和View层在一起的(在一个类里面,在一个Activity或者Fragment), 
     层次分明       
     方便项目的测试和后期的维护    

 缺点:
      Controller层和View耦合性太大

      Activtiy类或者Fragment类过于臃肿


MVP的层次

  • View层:视图层,它所对应的不只是layout中的xml文件还包括了Activity/Fragment作为视图的显示。这样做是扩大了View层的职责所在,View不仅是设置ui的显示和属性并且还包括了生命周期的回调。

  • Presenter层:主持者层,它相当于是Controller中的业务逻辑部分,它主要是负责view和model层之间的通信,及时的响应view层的请求并主动的调用model层的数据获取,并且将获取到的数据结果返回给view层中。presenter是另外新建立一个class,并且让view从创建的时候就持有一个presenter的实例,当view发生某些请求响应或者生命周期发生变化,则会迅速的向presenter发起请求,让presenter做出响应的处理,比如:刷新数据、清除数据防止泄露等。

  • Model层:此处的数据抽象层model和MVC中的model层是一样的。

优点与缺点

优点:
     逻辑清晰,层次分明       模块职责划分明显
     View层与Model层完全解耦,方便项目的测试和后期的维护 以及版本更新迭代   

 缺点:

     每个view有个presenter ,类多了。


个人的理解,有错可以向我提出!





我对MVC和MVP的一些理解

我对MVC和MVP的一些理解MVCMVC是软件架构中最常见的一种框架,简单来说就是通过controller的控制去操作model层的数据,并且返回给view层展示. 比如当用户出发事件的时候,vie...
  • qq_29446021
  • qq_29446021
  • 2016-07-04 22:05:56
  • 2069

对MVC、MVP、MVVM的理解

最近看了一堆js框架的文档,有点乱,想分门别类整理一下,但是首先需要搞清楚这些框架里面经常谈论的MV*之类的概念。MVC的概念很早就知道,现在发现还有MVP、MVVM,那么这些设计模式有什么区别呢?谈...
  • napolunyishi
  • napolunyishi
  • 2014-04-01 17:50:48
  • 24043

理解MVC,MVP和MVVM设计模式

原文链接:http://www.dotnet-tricks.com/Tutorial/designpatterns/2FMM060314-Understanding-MVC,-MVP-and-MVVM...
  • pkxiuluo01
  • pkxiuluo01
  • 2015-10-24 14:36:56
  • 24874

对于Android的MVC和MVP架构的理解

一、MVC的出现 早期,我们写Android代码,一般都是把所有代码写在Activity和Fragment中,包括数据请求和业务逻辑。后来,有人提出把数据请求单独写在一个帮助类中,这就出现了Mode...
  • zhouweiyong55
  • zhouweiyong55
  • 2018-01-06 23:50:39
  • 46

对Android中设计模式MVC,MVP,MVVM的简单理解

设计模式VS框架框架是代码的重用,可扩展。举几个简单的例子。Spring架构,Struts架构。设计模式是设计的重用,是一种抽象的设计方法。例如MVC,MVP,MVVM。下面,我们以android开发...
  • daihuimaozideren
  • daihuimaozideren
  • 2018-02-23 11:43:40
  • 295

MVC、MVP、MVVM,谈谈我对Android应用架构的理解

今日科技快讯近日,美国国务院公布了一条新规,要求外国人在申请美国签证时提供过去5年在指定社交媒体平台上使用的用户名。据美国《纽约时报》报道,新规针对的指定社交媒体平台有20家,其中大部分设在美国,包括...
  • c10WTiybQ1Ye3
  • c10WTiybQ1Ye3
  • 2018-04-02 00:00:00
  • 100

Android学习之浅谈对MVC模式和MVP模式的理解

进来听群里大神们一直在讲MVP模式的好处优点种种…,因为mvp出来有一段时间了,但是还没怎么了解过,所以周末看了看,并且敲了几个demo,感觉有点心得了,就浅谈一下自己的理解,不正确的地方请及时指出,...
  • qq_16131393
  • qq_16131393
  • 2016-04-17 23:49:27
  • 1074

MVC、MVP、MVVM深入理解与使用

对现在的Android架构与技术的选择进行了重新的思考,同时总结了对MVC、MVP、MVVM这三个典型架构深入的理解及它们的应用方法,给出了应用的示例代码。...
  • tyhj_sf
  • tyhj_sf
  • 2016-07-31 11:10:40
  • 834

Android MVC、MVP和MVVP的概念、运用及区别

MVC、MVP和MVVM都是为了解决界面呈现和逻辑代码分离而出现的模式。经典的MVC模式是M-V-X模式的老祖宗,MVP和MVVM都是在MVC的基础上演化而来。本文分为三个部分: 1. 概述MVC、...
  • qq_17250009
  • qq_17250009
  • 2016-04-15 13:44:47
  • 15677

谈谈android中的MVC,MVP和MVVM MVC

谈谈android中的MVC,MVP和MVVMMVC在jsp等网页架构中,mvc比较清晰,view就是网页前端,moderl数据端,controller在jsp中的体现就是Servlet,但在andr...
  • cjh94520
  • cjh94520
  • 2016-10-13 12:28:37
  • 512
收藏助手
不良信息举报
您举报文章:MVC与MVP(仅限个人的理解)
举报原因:
原因补充:

(最多只允许输入30个字)