关于MVVM的优点:

  • 方便测试

    在MVC下,Controller基本是无法测试的,里面混杂了个各种逻辑,而且分散在不同的地方。有了MVVM我们就可以测试里面的viewModel,来验证我们的处理结果对不对(Xcode7的测试已经越来越完善了)。

  • 便于代码的移植

    比如iOS里面有iPhone版本和iPad版本,除了交互展示不一样外,业务逻辑的model是一致的。这样,我们就可以以很小的代价去开发另一个app。(以前做公司iPad的时候就深深感觉到,全部在VC里面是多么的痛苦和重新开发一个没有啥区别)。

  • 兼容MVC

    MVVM是MVC的一个升级版,目前的MVC也可以很快的转换到MVVM这个模式。VC可以省去一大部分展示逻辑。

缺点:

  • 类会增多

    每个VC都附带一个viewModel,类的数量*2

  • viewModel会越来越庞大

    我们把逻辑给了viewModel,那势必Model也会变得很复杂,里面的属性和方法越来越多。可能重写的方法比较多,因为涉及到一些数据的转换以及和controller之间的通信。

  • 调用复杂度增加

    由于数据都是从viewModel来,想想突然来了一个新人,一看代码,不知道真实的模型是谁。比如常用tableview的数据源,一般都是一个数组,如果不断的通过viewModel去取,沟通上没有那么直接。况且每封一层,意味着要写很多代码去融合他们的转换。

文/JamesYu(简书作者)
原文链接:http://www.jianshu.com/p/f4faa720f00d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

MVVM架构的优缺点相关推荐

  1. 浅析MVC、MVP、MVVM 架构

    MVC 模型 Model 指数据逻辑和实体模型 View 指布局文件 Controllor 指Activity,既要负责页面的展示和交互,还得负责数据的请求和业务逻辑之类的工作. 看起来MVC架构很清 ...

  2. Android MVVM 架构应用实现

    以前项目中虽然也使用MVVM架构,但由于整体框架不是我自己搭建的,导致我对于MVVM架构的整体还是很不熟悉,所以这次就自己搭建并实现一次MVVM架构. MVVM架构使用的组件有ViewModel.Li ...

  3. 什么是分布式系统!以及分布式系统架构的优缺点!

    现在的架构很多,各种各样的,如高并发架构.异地多活架构.容器化架构.微服务架构.高可用架构.弹性化架构等,还有和这些架构相关的管理型的技术方法,如 DevOps.应用监控.自动化运维.SOA 服务治理 ...

  4. MVVM架构~knockoutjs系列之从Knockout.Validation.js源码中学习它的用法

    说在前 有时,我们在使用一个插件时,在网上即找不到它的相关API,这时,我们会很抓狂的,与其抓狂,还不如踏下心来,分析一下它的源码,事实上,对于JS这种开发语言来说,它开发的插件的使用方法都在它的源码 ...

  5. DDD CQRS架构和传统架构的优缺点比较

    DDD CQRS架构和传统架构的优缺点比较 https://mp.weixin.qq.com/s?src=3&timestamp=1503011877&ver=1&signat ...

  6. MVVM架构~knockoutjs系列之验证成功提示显示

    对于knockout.validation来说,我们已经知道了如何去验证大部分表单元素,而有时,我们的需求希望在每个元素验证成功后,去显示正确的提示,这个我们很容易的使用self.元素.isValid ...

  7. java用mvvm,[Java教程]MVVM架构~使用boxy和knockoutjs实现编辑功能

    [Java教程]MVVM架构~使用boxy和knockoutjs实现编辑功能 0 2014-04-24 14:00:08 返回目录 这个功能我认为非常有用,尤其在后台管理系统中,它对用户来说,使用体验 ...

  8. 《Android构建MVVM》系列(一) 之 MVVM架构快速入门

    前言 本文属于<Android构建MVVM>系列开篇,共六个篇章,详见目录树. 该系列文章旨在为Android的开发者入门MVVM架构,掌握其基本开发模式. 辅以讲解Android Arc ...

  9. android数据流分类,【Android工程之类】1 MVVM架构 - MVVM与单向数据流

    前言 这个系列将讲述使用MVVM架构.LiveData.Room.Kodein.Retrofit.EventBus来建立一个统一的.优雅的.可维护的TODO程序,本系列分为多个章节,从0开始一步一步引 ...

最新文章

  1. 华为的Java虚拟机_华为方舟编译器解析:提升安卓运行效率
  2. 天眼FAST如何发现脉冲星?
  3. Vue 视频播放插件vue-video-player
  4. PL/SQL developer快速执行选定语句
  5. 吴恩达机器学习课程资源(笔记、中英文字幕视频、课后作业,提供百度云镜像!)
  6. 前端菜鸟浅谈Web前端开发技术
  7. 关于win10桌面图标位置错乱的原因及解决办法
  8. 我从外包公司离职了(一定要看 防坑指南)!
  9. 关系数据模型、基本概念、关系模型的基本术语、关系代数
  10. 【word基础操作】如何在word中为公式编号
  11. 【机器学习】正样本和负样本
  12. 使用Kinect V2进行录制视频
  13. 智慧校园是实现智慧教育的必由之路
  14. 清默网络——负载均衡
  15. 运用Xmap将xml数据转换成javabean
  16. 实施工程师的必备技能
  17. 想做好物流成本控制,得秉承这个思路
  18. 互联网大咖看了都忍不住点赞的电脑配置指南【电脑小白必备】【十年私藏公开分享】
  19. 网络虚拟化——SR-IOV
  20. 震惊!我竟然在1080Ti上加载了一个35亿参数的模型(ZeRO, Zero Redundancy Optimizer)

热门文章

  1. 锐龙R3-3200G 配什么主板
  2. Xilisoft Video Converter Ultimate 6 keys
  3. python代码库能干什么_一行Python代码能做什么?
  4. 在线考试系统网站 毕业设计毕设源码毕业论文开题报告参考(1)功能概要
  5. htc+one+m7+linux驱动,HTC One(M7)的驱动下载
  6. 深入理解SVM,详解SMO算法
  7. 大一微积分笔记整理_微积分大一基础知识经典讲解
  8. katalon studio 安装教程
  9. Restorator 2005 v3.51 b1457
  10. 【历史上的今天】11 月 18 日:DNS 发明者出生;按键式问世;比尔·盖茨开始编程