用户界面编程模式 MVC MVP MVVM
用户界面编程模式 MVC MVP MVVM
程序 = 数据 + 算法
数据:就是待处理的东西
算法:就是代码
涉及到人机交互的程序,不可避免涉及到界面和界面上显示的数据
原始方式是界面代码和逻辑代码糅合在一起,没有分而治之,导致处理难度很大,我们需要要把界面代码和逻辑代码分开。
首先出现了MVC模式,后续又出现MVP模式及MVVM模式
这三种模式,都是由view来驱动的,就是一个业务由用户来触发,再到control(或者P或者VM), 再到model,本质是分离view和model
view <----> control <----> model
1.MVC(model-view-control)
1.用户通过view触发请求
2.control收到请求,找到合适的model,调用model
3.model处理请求,返回数据
4.control调用view,并把model传递给view
5.view获取model中的数据,更新view
这种模式view和model没有彻底分开,view单向依赖model
2.MVP(model-view-presenter)
1.用户通过view触发请求
2.P收到请求,找到合适的model,调用model
3.model处理请求,返回数据
4.P根据model,更新view
这种模式view model彻底分开了,不过P中要写大量的代码来更新view
3.MVVM(model-view-viewModel)
1.用户通过view触发请求
2.VM收到请求,找到合适的model,调用model
3.model处理请求,返回数据
4.VM透传model数据到view
5.view自动更新界面
这种模式view model彻底分开了,通过透传(数据绑定机制),VM中不用写那些大量的更新view代码
三种模式的区别:
1.MVC中 view model未彻底分离,其他两种都彻底分离
2.MVP中 P中需要写大量的数据绑定代码来更新view,其他两种无这种缺点
3.MVVM中 view model中的数据是双向绑定的,修改数据都会影响对方的相应数据
MVVM模型既分离了view model,对控制器的压力也不太大,是一中比较好的分离方案
这三种模式的应用
1.web方面
a.服务器端
struts2,springMVC
都是MVC方案,JSP、各种模板等等都是view
b.前端
前端MVC, 前端MVVM
这些控制都在前端(浏览器端,JS代码实现),后端之负责为前端提供业务数据(业务逻辑也在后端做,返回最终结果给前端即可)
2.移动设备
ANDROID 支持这三种模式的开发
IOS 也支持这三种模式的开发
3.桌面
windows
VC VS 都支持MVC
用户界面编程模式 MVC MVP MVVM的更多相关文章
- 浅析前端开发中的 MVC/MVP/MVVM 模式
MVC,MVP和MVVM都是常见的软件架构设计模式(Architectural Pattern),它通过分离关注点来改进代码的组织方式.不同于设计模式(Design Pattern),只是为了解决一类 ...
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
相关:http://www.cnblogs.com/wytiger/p/5996876.html 和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于 ...
- MVC, MVP, MVVM比较以及区别(上)
MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式.以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一下 ...
- android MVC && MVP && MVVM分析和对比
相关:http://www.cnblogs.com/wytiger/p/5305087.html 出处http://blog.csdn.net/self_study,对技术感兴趣的同鞋加群544645 ...
- MVC, MVP, MVVM比较以及区别
MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式.以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一下 ...
- 前端mvc mvp mvvm 架构介绍(vue重构项目一)
首先 我们为什么重构这个项目 1:我们现有的技术是前后台不分离,页面上采用esayUI+jq构成的单页面,每个所谓的单页面都是从后台胜场的唯一Id 与前端绑定,即使你找到了那个页面元素,也找不到所在的 ...
- Android App的设计架构:MVC,MVP,MVVM与架构AAAAA
1. 架构设计的目的1.1 通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.1.2 这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点,提高程序开发的效率,并且更容易进行后续 ...
- [转]MVVM架构~mvc,mvp,mvvm大话开篇
MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示.作为一种新的模式,MVP与MVC有着一 ...
- [1] MVC & MVP &MVVM
开发架构之MVC & MVP & MVVM
随机推荐
- 二十九、CI框架之session用法
一.我们在控制器中添加session写入和读取的2个函数,如图: 二.我们用浏览器访问login页面,可以看到有一串被加密的cookies,在CI中session也是以cookies的方式存放的 三. ...
- 吴裕雄--天生自然 JAVASCRIPT开发学习:运算符
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- LeJOS下eclipse通过USB连接EV3
适用情况:在eclipse安装好LeJOS插件后,再通过USB连接EV3. 第一:更新驱动 在<设备管理器-网络适配器>下更新RNDIS/Ethernet Gadget,电脑需要先连接EV ...
- python numpy 矩阵左右翻转/上下翻转
numpy API: flattened flip() (in module numpy) fliplr() (in module numpy) flipud() (in module numpy) ...
- 对python里的装饰器
内裤可以用来遮羞,但是到了冬天它没法为我们防风御寒,聪明的人们发明了长裤,有了长裤后宝宝再也不冷了,装饰器就像我们这里说的长裤,在不影响内裤作用的前提下,给我们的身子提供了保暖的功效. 再回到我们的主 ...
- 应用层上的协议HTTP
HTTP http://www.runoob.com/http/http-tutorial.html https://www.cnblogs.com/houfee/articles/9161847.h ...
- 微信小程序常用代码(1)——tab切换
<view class="font-bold tab-content"> <!-- 循环列表 --> <block wx:for=&quo ...
- 100道Java面试题整理(助力2020面试!)
1.您对微服务有何了解? 微服务,又称微服务 架 构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 . 通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物.他 ...
- [CISCN2019 华北赛区 Day1 Web1]Dropbox-phar文件能够上传到服务器端实现任意文件读取
0x00知识点 phar是什么: 我们先来了解一下流包装 大多数PHP文件操作允许使用各种URL协议去访问文件路径:如data://,zlib://或php://.例如常见的 include('php ...
- idea代理上网
idea 代理上网 浏览器能够上网,idea无法下载jar 浏览器无法上网则配置浏览器代理 --------- start //------------------------浏览器代理完毕 idea ...