MVC【最常用】:

  • MVC的定义:
    M:业务逻辑处理。【业务MODEL】
    V:处理数据显示的部分。【如xml布局文件】
    C:Activity处理用户交互的问题。【也就是Activity在MVC中扮演着C的角色】
  • MVC的特点:
    ①、耦合性低。
    ②、可扩展性好。
    ③、模块职责划分明确。
  • MVC的实例详解:

    而当请求成功之后则会在Activity中进行回调处理:

    也就是Activity业务控制的作用,MVC的C的角色。

  • 总结:
    ①、利用MVC设计模式,使得项目有了很好的可扩展和维护性。
    ②、controller(控制器)是一个中间桥梁的作用。
    ③、什么时候适合使用MVC模式呢?当一个项目很小,

MVP【如今越来越流行】:

它的由来也是基于MVC框架的进一步改良,对于Activity的C层里面既有业务代码,也有显示层的东东,这就显示Activity这一层显得非常的冗余和臃肿,所以下面来了解一下MVP:

MVP定义:

M:依然是业务逻辑和实体模型。
V:对应于Activity,负责View的绘制以及与用户交互。

P: 负责完成View与Model之间的交互。【这是与MVC最大的区别】
下面用一张图来直观的感受一下MVC和MVP的区别:

可以看到MVC中的model与C和V都有关联,而在MVP中Model只与P层关联,所以MVC与MVP最大的区别就在于MVC的M是直接可以与V进行交互的,而在MVP中M只与P进行交互。

MVP实例讲解:

下面以用户登录功能为例,先看一下代码的结构:

下面具体来看一下代码,先看M层:

然后业务层登录方法:

而接着到View层了,这里需要以接口的形式来定义,具体如下:

然后在Activity中去实现这些接口,具体如下:

接着再来看一下P类的设计,这也是MVP最独特的,具体如下:

从这个P中可以看到就是用来控制业务逻辑并调用显示层的一些接口来达到组装的效果。

MVVM【用得较少】:

它是Model-View-ViewModel的缩写,这个反正在实际开发中用得比较少,虽说它是更高级的一种模式,不过也是在面试中会大量被问到的,所以也需要对其进行了解,先来看一张图:

1、View:对应于Activity和XML,负责View的绘制以及与用户交互,它是不能做任何与业务相关的操作。

2、Model:实体模型,这跟咱们平常定义的Model层是不一样的。

3、ViewModel:负责完成View与Model之间的交互,负责业务逻辑。它不能做任何与UI相关的操作,也就是不能持有任何View的引用。

关于MVVM与MVP的区别可以用这篇博客【https://www.jianshu.com/p/a15d6e68d93f】所介绍的,如下:

如博主所说明的:“可以看到 ViewModel 承担了 Presenter 中与 view和 Model 交互的职责,与 MVP模式不同的是,VM与 V 之间是通过 Datebingding 实现的,而 P是持有 View 的对象,直接调用 View 中的一些接口方法来实现。ViewModel可以理解成是View的数据模型和Presenter的合体。**它通过双向绑定(松耦合)解决了MVP中Presenter与View联系比较紧密的问题。 **”。

热门前沿知识相关面试问题-MVC/MVP/MVVM架构设计模式面试问题详解的更多相关文章

  1. 前端mvc mvp mvvm 架构介绍(vue重构项目一)

    首先 我们为什么重构这个项目 1:我们现有的技术是前后台不分离,页面上采用esayUI+jq构成的单页面,每个所谓的单页面都是从后台胜场的唯一Id 与前端绑定,即使你找到了那个页面元素,也找不到所在的 ...

  2. 热门前沿知识相关面试问题-android插件化面试问题讲解

    插件化由来: 65536/64K[技术层面上]随着代码越来越大,业务逻辑越来繁杂,所以很容易达到一个65536的天花板,其65536指的是整个项目中的方法总数如果达到这个数量时则不无法创建新的方法了, ...

  3. 实例说明MVC,MVP,MVVM架构

    很早就知道有这三个概念,但是一直都不清楚是怎么回事,在网上搜索,都是泛泛而谈,没有具体例子,新手是看不懂的,直到找到这篇文章,我对这三个架构有了更清楚的了解. 从一个简单的例子去研究这三个架构. 注意 ...

  4. android MVC && MVP && MVVM分析和对比

    相关:http://www.cnblogs.com/wytiger/p/5305087.html 出处http://blog.csdn.net/self_study,对技术感兴趣的同鞋加群544645 ...

  5. Android App的设计架构:MVC,MVP,MVVM与架构经验谈

    相关:http://www.cnblogs.com/wytiger/p/5996876.html 和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于 ...

  6. MVC, MVP, MVVM比较以及区别(上)

    MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式.以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一下 ...

  7. MVC, MVP, MVVM比较以及区别

    MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式.以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一下 ...

  8. 浅析前端开发中的 MVC/MVP/MVVM 模式

    MVC,MVP和MVVM都是常见的软件架构设计模式(Architectural Pattern),它通过分离关注点来改进代码的组织方式.不同于设计模式(Design Pattern),只是为了解决一类 ...

  9. [转]MVVM架构~mvc,mvp,mvvm大话开篇

    MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示.作为一种新的模式,MVP与MVC有着一 ...

随机推荐

  1. k8s nginx-ingress 上传文件大小限制

    k8s集群中,将图片或是文件上传到文件服务器上, 可是大于1M是就会报错 413 Request Entity Too Large 以前用的是:    # ingress.kubernetes.io/ ...

  2. webdriver的八种定位

    转自https://zhuanlan.zhihu.com/p/54588889 在UI层面的自动化测试开发中,元素的定位与操作是基础,也是经常遇到的困难所在.webdriver提供了8种定位: 1. ...

  3. maven 运行web工程

    1.使用命令mvn package,将工程打包成war包 2.把war包放置到tomcat的webapps目录下,运行tomcat

  4. OS X更新Catalina 10.15.2后虚拟机黑屏(已解决)

    简述 问题:更新OS X 10.15.2后VM Ware进unbuntu 16.0黑屏,但是VM Ware 有显示,情况类似如下: 解决办法   重启系统,command+r 进入恢复模式,打开bas ...

  5. ubuntu 16.04主题美化

    目录 numix图标 Flatabulous主题 参考: Unity-tweak-tool插件 numix图标 sudo apt-add-repository ppa:numix/ppa sudo a ...

  6. delphi 相关好的资料网站

    1.Delphi编程技巧大全   http://www.delphitop.com/  (实例讲解所有组件) 2.Delphi学习大师  Delphi基础教程 视频教程  http://www.xue ...

  7. Python-基础-文件操作-随机存取

    随机存取 文件操作中,read()和write()都属于顺序存取,只能按顺序从头到尾的进行读写.实际上我们可以只访问文件中我们感兴趣的部分.对此,我们可以使用seek()和tell()方法.两种方法的 ...

  8. pip安装源

    目录 介绍 永久配置安装源 Windows MacOS.Linux 配置文件内容 介绍 """ 1.采用国内源,加速下载模块的速度 2.常用pip源: -- 豆瓣:htt ...

  9. python — 进程

    目录 1. 进程 1.进程就是一个运行中的程序(是对正在运行程序的一个抽象). 2.程序和进程之间的区别: 程序只是一个文件 进程是这个文件被CPU运行起来了 程序是永久的,进程是暂时的. 3.进程- ...

  10. Spring Boot源码分析-配置文件加载原理

    在Spring Boot源码分析-启动过程中我们进行了启动源码的分析,大致了解了整个Spring Boot的启动过程,具体细节这里不再赘述,感兴趣的同学可以自行阅读.今天让我们继续阅读源码,了解配置文 ...