复杂的软件必须有清晰合理的架构,否则无法开发和维护。

MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用。

它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了。

一、MVC

MVC模式的意思可以分成三个部分。

● 视图(View):用户界面。

● 控制器(Controller):业务逻辑

● 模型(Model):数据保存

各部分之间的通信方式如下。

1、View 传送指令到 Controller

2、Controller 完成业务逻辑后,要求 Model 改变状态

3、Model 将新的数据发送到 View,用户得到反馈

所有通信都是单向的。

二、MVP

MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向。

1、各部分之间的通信,都是双向的。

2、View 与 Model 不发生联系,都通过 Presenter 传递。

3、View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。

三、MVVM

MVVM 模式将 Presenter 改名为ViewModel,基本上与 MVP 模式完全一致。

唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。Angular 和 Ember 都采用这种模式。

转载于:https://www.cnblogs.com/minigrasshopper/p/7693246.html

浅谈MVC MVP MVVM相关推荐

  1. 浅谈 MVC、MVP 和 MVVM 架构模式

    2019独角兽企业重金招聘Python工程师标准>>> 谈谈 MVX 中的 Model 谈谈 MVX 中的 View 谈谈 MVX 中的 Controller 浅谈 MVC.MVP ...

  2. 表现层持续解耦带来的模式转变 MVC MVP MVVM

    ---微软WPF带来的团队变化和软件技术变化  Model-View-ViewModel是一种架构模式,主要在WPF.Silverlight和WP7开发里使用,它的目标是从视图层移除几乎所有代码隐藏( ...

  3. java mvc mvp mvvm_一篇文章了解架构模式:MVC/MVP/MVVM

    架构模式的文章很多,好理解的没有几个.大部分文章出现的主要问题有: 没有设定好作用域:前端MVC是改造过的MVC,和后台MVC有明显的区别,不能一概而论 没有实际的例子:实际的例子对应日常的工作,没有 ...

  4. Android中常见的MVC/MVP/MVVM模式

    Android中常见的MVC/MVP/MVVM模式 经典MVC 在1979年,经典MVC模式被提出. 在当时,人们一直试图将纯粹描述思维中的对象与跟计算机环境打交道的代码隔离开来,而Trygve Re ...

  5. Android 系统(77)---MVC,MVP,MVVM的区别

    MVC,MVP,MVVM的区别 一.MVC 软件可以分为三部分 1.Model:模型层,负责处理数据的加载或者存储  2. View:视图层,负责界面数据的展示,与用户进行交互  3.Controll ...

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

    本文转载自https://www.tianmaying.com/tutorial/AndroidMVC,原文作者周鸿博. 和MVC框架模式一样,Model模型处理数据代码不变在Android的App开 ...

  7. iOS-【转载】架构模式 - 简述 MVC, MVP, MVVM 和 VIPER

    看了很多篇关于 iOS 架构模式的,尤其是关于 MVVM 的,都是似懂非懂,无意看见了这篇,发现总结的很到位,很用心,特转载至此,如果英语好,请看原文 iOS Architecture Pattern ...

  8. iOS-【转载】架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译)

    看了很多篇关于 iOS 架构模式的,尤其是关于 MVVM 的,都是似懂非懂,无意看见了这篇,发现总结的很到位,很用心,特转载至此,如果英语好,请看原文 iOS Architecture Pattern ...

  9. iOS 架构模式 - 简述 MVC, MVP, MVVM

    Make everything as simple as possible, but not simpler - Albert Einstein,把每件事,做简单到极致,但又不过于简单 - 阿尔伯特· ...

最新文章

  1. java socket 重连复用,20190818 On Java8 第八章 复用
  2. hadoop可以解决什么问题_快速解决皮带机轴磨损问题可以这样做
  3. jQuery简单插件开发
  4. Java 初始化块
  5. CDH页面配置HA(高可用)
  6. 23种设计模式(十六)接口隔离之中介者
  7. Android集成三方腾讯浏览器X5内核
  8. C# Json转list List转json
  9. 自学通过CISSP备考心得
  10. 天津理工大学物联网通信技术实验1:数字基带信号(NRZ、NRZ-I、AMI、HDB3信道编码)
  11. Denoise: from image to point cloud
  12. 用完加速器国内的网址打不开了?
  13. ADC和DAC的DNL和INL
  14. 微信小程序登录功能wx.login
  15. 中小项目敏捷实践之一(关于项目所有者和责任人)
  16. AAAI2021会议马上开放注册了!注意截稿时间!
  17. APP移植到小米Pad上的Crash分析
  18. MediaPlayer播放音频
  19. 铁腕军阀服务器无响应,铁腕军阀冬季攻势
  20. 天地劫幽城再临服务器维护,天地劫幽城再临开服时间是什么时候_天地劫幽城再临开服时间一览_3DM手游...

热门文章

  1. 【Comet OJ - Contest #5 - C】迫真小游戏(优先队列,贪心构造,树,字典序)
  2. 【2019浙江省赛 - A】Vertices in the Pocket(权值线段树下二分,图,思维)
  3. 【CodeForces - 985D】Sand Fortress (二分,贪心,思维构造,技巧,有坑)
  4. java 内部类 菜鸟编程,java中的匿名内部类
  5. java中能构成循环的语句_《编程导论(Java)#183;3.2.4 循环语句》
  6. RelativeDateFormat时间计算工具类
  7. 普通IO流字符输入输出流文件拷贝
  8. * 将字符串日期时间格式,转为毫秒
  9. uniapp 刷新后数据都没有了_环境温度传感器都没有连接,竟然还会有数据?
  10. Linux网络编程 | socket选项设定 及 网络信息API