热门前沿知识相关面试问题-MVC/MVP/MVVM架构设计模式面试问题详解
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】所介绍的,如下:

热门前沿知识相关面试问题-MVC/MVP/MVVM架构设计模式面试问题详解的更多相关文章
- 前端mvc mvp mvvm 架构介绍(vue重构项目一)
		
首先 我们为什么重构这个项目 1:我们现有的技术是前后台不分离,页面上采用esayUI+jq构成的单页面,每个所谓的单页面都是从后台胜场的唯一Id 与前端绑定,即使你找到了那个页面元素,也找不到所在的 ...
 - 热门前沿知识相关面试问题-android插件化面试问题讲解
		
插件化由来: 65536/64K[技术层面上]随着代码越来越大,业务逻辑越来繁杂,所以很容易达到一个65536的天花板,其65536指的是整个项目中的方法总数如果达到这个数量时则不无法创建新的方法了, ...
 - 实例说明MVC,MVP,MVVM架构
		
很早就知道有这三个概念,但是一直都不清楚是怎么回事,在网上搜索,都是泛泛而谈,没有具体例子,新手是看不懂的,直到找到这篇文章,我对这三个架构有了更清楚的了解. 从一个简单的例子去研究这三个架构. 注意 ...
 - android MVC && MVP && MVVM分析和对比
		
相关:http://www.cnblogs.com/wytiger/p/5305087.html 出处http://blog.csdn.net/self_study,对技术感兴趣的同鞋加群544645 ...
 - Android App的设计架构:MVC,MVP,MVVM与架构经验谈
		
相关:http://www.cnblogs.com/wytiger/p/5996876.html 和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于 ...
 - MVC, MVP, MVVM比较以及区别(上)
		
MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式.以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一下 ...
 - MVC, MVP, MVVM比较以及区别
		
MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式.以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一下 ...
 - 浅析前端开发中的 MVC/MVP/MVVM 模式
		
MVC,MVP和MVVM都是常见的软件架构设计模式(Architectural Pattern),它通过分离关注点来改进代码的组织方式.不同于设计模式(Design Pattern),只是为了解决一类 ...
 - [转]MVVM架构~mvc,mvp,mvvm大话开篇
		
MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示.作为一种新的模式,MVP与MVC有着一 ...
 
随机推荐
- Books Exchange (easy version)   CodeForces - 1249B2
			
The only difference between easy and hard versions is constraints. There are nn kids, each of them i ...
 - 【VS开发】RIbbon编程
			
多彩界面,Ribbon编程 Ribbon是类似于office2007样式的界面,它替代了传统的MFC程序里的菜单和工具栏,MFC默认生成的Ribbon功能少,需要我们自己添加一些控件和图片等元素使界面 ...
 - 如何写出优雅耐看的JavaScript代码
			
参考链接:https://segmentfault.com/a/1190000020444918?utm_medium=hao.caibaojian.com&utm_source=hao.ca ...
 - python 配合 es 查询数据
			
1.python脚本 [root@do1cloud03 ~]# cat python-es.py #!/usr/bin/env python3 from elasticsearch import El ...
 - beam search 和 greedy search
			
贪心搜索(greedy search): 贪心搜索最为简单,直接选择每个输出的最大概率,直到出现终结符或最大句子长度. 集束搜索(beam search): 集束搜索可以认为是维特比算法的贪心形式,在 ...
 - SolidWorks学习笔记9 自顶向下方法
			
目的:制作一个轴承. 先创建一个零件作为一级控件,(草图)如下,是轴承的横截面. 创建内环. 新建一个零件,然后选择插入=>零件,选择“一级控件”零件 创建卡环,插入零件,选择一级控件 然后再旋 ...
 - 使用JedisPool资源池操作Redis,并进行性能优化
			
一.使用方法 ----------------------------------------- private volatile static JedisPool pool = null; //本地 ...
 - fastadmin model关联模型 关联查询问题
			
一对一关联 public function getGoodName(){ return $this->belongsTo('app\api\model\goods\Good','goods_go ...
 - 通过SublimeCodeIntel设置JavaScript自动补全
			
1.首先安装SublimeCodeIntel包. 进入sublime,通过Ctrl+Shift+P进入包管理,输入pci(首字母),选择Package Contrl:Intall Package,如图 ...
 - vue配置外放generate-asset-webpack-plugin
			
解决方法:(共有2个方法) 1.借助插件 generate-asset-webpack-plugin .在webpack.prod.conf.js中去生成configServer.json文件,让其 ...