浅析MVC、MVP、MVVC的异同
MVC
- 模型(Model):数据保存
- 视图(View):用户界面。
- 控制器(Controller):业务逻辑
通信方式:
通信流程:
- 用户通过UI界面的交互触发View响应,View发送指令给Controller
- Controller完成业务逻辑之后,要求Model更新数据
- Model将新数据发送给View,要求View更新,更新后用户得到反馈
注意:MVC所有通信都是单向的
MVP
MVP模式将MVC的Controller更名为Presenter
通信方式:
注意:
- 各部分之间的通信都是双向的
- View和Model不发生联系,都通过Presenter传递
- View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。
MVVM
MVVM 模式将 Presenter 改名为 ViewModel(视图模型),基本上与 MVP 模式完全一致。
通信方式
唯一的区别是,View和ViewModel之间是双向绑定
通信流程:
- View 接收用户交互请求
- View 将请求转交给ViewModel
- ViewModel 操作Model数据更新
- Model 更新完数据,通知ViewModel数据发生变化
- ViewModel 更新View数据
典型框架:Vue、Angular
以Vue为例
- model:对应data中的数据
- v:模板、UI界面
- VM:Vue实例对象
MVVM与MVC最大的区别在于MVVM中的ViewModel会自动更新视图
参考文档
MVC,MVP 和 MVVM 的图示 - 阮一峰的网络日志 (ruanyifeng.com)
浅析MVC、MVP、MVVC的异同相关推荐
- Android架构设计之MVC/MVP/MVVM浅析
目录 写在前面 一.案例演示 二.MVC模式 2.1.MVC简介 2.2.MVC模式的使用 2.3.MVC模式的缺点 三.MVP模式 3.1.MVP简介 3.2.MVP模式的作用 3.3.MVP模式的 ...
- MVC,MVP与MVVM
一.MVC是什么 1.MVC概念 MVC(Model View Controller),模型(model)-视图(view)-控制器(controller),软件框架的一种. (1)最上层view视图 ...
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
本文转载自https://www.tianmaying.com/tutorial/AndroidMVC,原文作者周鸿博. 和MVC框架模式一样,Model模型处理数据代码不变在Android的App开 ...
- MVC与MVVC的区别
MVC:control负责调度,model和view没有直接联系(分层,职责明确.可重用但业务逻辑无法重用) 1.view(负责跟用户交互的页面) 2.control(接受请求->调用模型-&g ...
- MVC---Android App的设计架构:MVC,MVP,MVVM与架构经验谈
转载自: http://www.tianmaying.com/tutorial/AndroidMVC 1.架构设计的目的 通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.这样做的好处是使 ...
- mvc mvp mvvm的区别与联系_MVC,MVP,MVVM比较以及区别(上)
MVC,MVP,MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式,以前只是对他们有部分的了解,没有深入的研究过,对于一些里边的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一些对 ...
- .从三层架构到MVC,MVP
从三层架构到MVC,MVP http://www.cnblogs.com/daizhj/archive/2009/04/30/1447035.html 一. MVC是谁提出的 模型-视图-控制器(MV ...
- 表现层持续解耦带来的模式转变 MVC MVP MVVM
---微软WPF带来的团队变化和软件技术变化 Model-View-ViewModel是一种架构模式,主要在WPF.Silverlight和WP7开发里使用,它的目标是从视图层移除几乎所有代码隐藏( ...
- MVC, MVP, MVVM比较以及区别(下)
上一篇得到大家的关注,非常感谢.一些朋友评论中,希望快点出下一篇.由于自己对于这些模式的理解也是有限,所以这一篇来得迟了一些.对于这些模式的比较,是结合自己的理解,一些地方不一定准确,但是只有亮出自己 ...
- java mvc mvp mvvm_一篇文章了解架构模式:MVC/MVP/MVVM
架构模式的文章很多,好理解的没有几个.大部分文章出现的主要问题有: 没有设定好作用域:前端MVC是改造过的MVC,和后台MVC有明显的区别,不能一概而论 没有实际的例子:实际的例子对应日常的工作,没有 ...
最新文章
- python整数类型的表示字母_Python学习笔记之基本数据类型-Number
- 2021年春季学期-信号与系统-第十五次作业参考答案-第九小题参考答案
- [转载] 中华典故故事(孙刚)——13 马虎
- SpringBoot学习系列之一
- 高质量C /C编程指南---附录B :C /C试题和谜底
- iOS10 资料汇总:值得回看的 10 篇 iOS 热文
- 番外篇01:angularJS最佳实战
- 精通Python网络爬虫:核心技术、框架与项目实战.3.2 爬行策略
- Jsp+Ssh+Mysql实现的简单的企业物资信息管理系统
- Java RandomAccessFile示例
- python实验收获与反思 100字_期中考试总结与反思100字4篇
- svm (opencv)几个主要函数
- Python django 安装 mysqlclient 失败
- 第一个Maven工程的目录结构和文件内容及联网问题
- android 程序员 计算器,程序员计算器(进制转换)
- Android--关闭某个指定activity,android开发游戏
- 计算机系毕业论文绪论,本科毕业论文绪论范文
- 这篇文章说说特征工程(反欺诈与征信变量)
- A1,A2,A3,A4纸的尺寸
- 织梦dedecms橙色响应式月嫂保姆家政服务公司网站模板
热门文章
- oracle if中过程判断,oracle的if判断语句
- Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境【转】
- SQL Server添加数据
- php laravel 扫码支付 一码付
- android canvans 画3d,如何用Canvas做一个3D球
- 如何在spring boot+maven项目中调用支付宝第三方接口(沙箱环境)
- 无向图输出两个节点之间的所有路径
- 即时通讯IM源码应该如何做好安全防护?
- 单一职责模式之装饰器模式
- SpringCloud 中 Feign 核心原理,简单易懂!