MVC  流程图

MVC 是 Model-View-Controller 的简写。MVC 主要有三层:

  • Model 数据层,读写数据,保存 App 状态
  • View 页面层,和用户交互,向用户显示页面,反馈用户行为
  • ViewController 逻辑层,更新数据,或者页面,处理业务逻辑

MVC 可以帮助你很好的将数据,页面,逻辑的代码分离开来。使得每一层相对独立。这样你就能够将一些可复用的功能抽离出来,化繁为简。只不过,一旦 App 的交互变复杂,你就会发现 ViewController 将变得十分臃肿。大量代码被添加到控制器中,使得控制器负担过重。此时,你就需要想办法将控制器里面的代码进一步地分离出来,对 APP 进行重新分层。而 MVVM 就是一种进阶的分层方案。

MVVM 流程图

MVVM 和 MVC 十分相识。只不过他的分层更加详细:

  • Model 数据层,读写数据,保存 App 状态
  • View 页面层,提供用户输入行为,并且显示输出状态
  • ViewModel 逻辑层,它将用户输入行为,转换成输出状态
  • ViewController 主要负责数据绑定

没错,ViewModel 现在是逻辑层,而控制器只需要负责数据绑定。如此一来控制器的负担就减轻了许多。并且 ViewModel 与控制器以及页面相独立。tuan

梳理MVC 架构 MVVM架构相关推荐

  1. MVC及MVVM架构

    MVC (Model View Controller) 架构:模型-视图-控制器模式 模型(Model):负责存储系统的中心数据 视图(View):将信息显示给用户 控制器(Controller):处 ...

  2. mvvm模式和mvc的区别_Android 开发中的架构模式 -- MVC / MVP / MVVM

    预备知识 了解 Android 基本开发 看完本文可以达到什么程度 了解如何分析一个架构模式 掌握 MVC,MVP,MVVM 架构定义和实现 更多面试内容,面试专题,flutter视频 全套,音视频从 ...

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

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

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

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

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

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

  6. iOS 架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译)

    在使用 iOS 的 MVC 时候感觉怪怪的?想要尝试下 MVVM?之前听说过 VIPER,但是又纠结是不是值得去学? 继续阅读,你就会知道上面问题的答案 - 如果读完了还是不知道的话,欢迎留言评论. ...

  7. [iOS][转]iOS 架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译)

    转自: https://segmentfault.com/a/1190000004680605?ref=myread Make everything as simple as possible, bu ...

  8. 架构模式:MVC与MVVM

    本文探讨如下几个问题: 什么是MVC 什么是MVVM MVC与MVVM对架构属性的影响 MVC实例SpringMVC MVVM实例Vue MVC.MVVM与Layer中的Model,Controlle ...

  9. 探索从 MVC 到 MVVM + Flux 架构模式的转变

    在业务中一般 MVVM 框架一般都会配合上数据状态库(redux, mobx 等)一起使用,本文会通过一个小 demo 来讲述为什么会引人数据状态库. 从 MVC 到 MVVM 模式说起 传统 MVC ...

最新文章

  1. EF-Linq将查询结果转换为Liststring
  2. 如何建立和维护自己的“人脉”
  3. [Freescale]E9学习笔记-LTIB安装配置
  4. QoS、IPv6、软交换和VoIP技术受质疑
  5. java tomcat日志中文乱码问题解决
  6. 网站优化需要团队协作
  7. JavaScript中null与undefined的比较
  8. c语言程序转换成单片机语言,单片机编程常用到的类型转换 C语言程序实现
  9. 如何使用Angular rxjs进行优雅限流
  10. 使用BigQuery分析GitHub上的C#代码
  11. FFMPEG设置 cbr讨论
  12. 怎么看我装的sql能不能用_深入浅出sql优化(三)之单表索引优化
  13. 明尼苏达计算机科学与工程,明尼苏达大学计算机科学专业排名第29(2020年USNEWS美国排名)...
  14. SaaS ToB产品的易用性设计2
  15. 算法实现自动扫雷游戏
  16. 不同长度的字符串/中文串相似度对比算法
  17. 如何使用prism进行统计分析(Analysis)?
  18. Mac pro 连上wifi 5G提示无ip地址
  19. echarts-锥型柱状图
  20. PHP八字强弱计算,八字强弱自动计算,在线测试生辰八字强弱

热门文章

  1. taskset -pc PID 查看线程占用cpu核
  2. java 异常处理
  3. 冲刺One之站立会议8 /2015-5-21
  4. JS如何获取RadiobuttonList的选中值
  5. WCF Data Service 的.NET Client 的不支持原生类型服务操作的解决方法
  6. delphi SAP
  7. Kettle连接HiveServer2配置和常见问题解决
  8. 异步多线程(五)多线程异常处理
  9. php中并发读写文件冲突的解决方案(文件锁应用示例)
  10. jmeter发送json数据,报405、400错误解决方案