MVVM架构的优缺点
关于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去取,沟通上没有那么直接。况且每封一层,意味着要写很多代码去融合他们的转换。
原文链接:http://www.jianshu.com/p/f4faa720f00d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
MVVM架构的优缺点相关推荐
- 浅析MVC、MVP、MVVM 架构
MVC 模型 Model 指数据逻辑和实体模型 View 指布局文件 Controllor 指Activity,既要负责页面的展示和交互,还得负责数据的请求和业务逻辑之类的工作. 看起来MVC架构很清 ...
- Android MVVM 架构应用实现
以前项目中虽然也使用MVVM架构,但由于整体框架不是我自己搭建的,导致我对于MVVM架构的整体还是很不熟悉,所以这次就自己搭建并实现一次MVVM架构. MVVM架构使用的组件有ViewModel.Li ...
- 什么是分布式系统!以及分布式系统架构的优缺点!
现在的架构很多,各种各样的,如高并发架构.异地多活架构.容器化架构.微服务架构.高可用架构.弹性化架构等,还有和这些架构相关的管理型的技术方法,如 DevOps.应用监控.自动化运维.SOA 服务治理 ...
- MVVM架构~knockoutjs系列之从Knockout.Validation.js源码中学习它的用法
说在前 有时,我们在使用一个插件时,在网上即找不到它的相关API,这时,我们会很抓狂的,与其抓狂,还不如踏下心来,分析一下它的源码,事实上,对于JS这种开发语言来说,它开发的插件的使用方法都在它的源码 ...
- DDD CQRS架构和传统架构的优缺点比较
DDD CQRS架构和传统架构的优缺点比较 https://mp.weixin.qq.com/s?src=3×tamp=1503011877&ver=1&signat ...
- MVVM架构~knockoutjs系列之验证成功提示显示
对于knockout.validation来说,我们已经知道了如何去验证大部分表单元素,而有时,我们的需求希望在每个元素验证成功后,去显示正确的提示,这个我们很容易的使用self.元素.isValid ...
- java用mvvm,[Java教程]MVVM架构~使用boxy和knockoutjs实现编辑功能
[Java教程]MVVM架构~使用boxy和knockoutjs实现编辑功能 0 2014-04-24 14:00:08 返回目录 这个功能我认为非常有用,尤其在后台管理系统中,它对用户来说,使用体验 ...
- 《Android构建MVVM》系列(一) 之 MVVM架构快速入门
前言 本文属于<Android构建MVVM>系列开篇,共六个篇章,详见目录树. 该系列文章旨在为Android的开发者入门MVVM架构,掌握其基本开发模式. 辅以讲解Android Arc ...
- android数据流分类,【Android工程之类】1 MVVM架构 - MVVM与单向数据流
前言 这个系列将讲述使用MVVM架构.LiveData.Room.Kodein.Retrofit.EventBus来建立一个统一的.优雅的.可维护的TODO程序,本系列分为多个章节,从0开始一步一步引 ...
最新文章
- 华为的Java虚拟机_华为方舟编译器解析:提升安卓运行效率
- 天眼FAST如何发现脉冲星?
- Vue 视频播放插件vue-video-player
- PL/SQL developer快速执行选定语句
- 吴恩达机器学习课程资源(笔记、中英文字幕视频、课后作业,提供百度云镜像!)
- 前端菜鸟浅谈Web前端开发技术
- 关于win10桌面图标位置错乱的原因及解决办法
- 我从外包公司离职了(一定要看 防坑指南)!
- 关系数据模型、基本概念、关系模型的基本术语、关系代数
- 【word基础操作】如何在word中为公式编号
- 【机器学习】正样本和负样本
- 使用Kinect V2进行录制视频
- 智慧校园是实现智慧教育的必由之路
- 清默网络——负载均衡
- 运用Xmap将xml数据转换成javabean
- 实施工程师的必备技能
- 想做好物流成本控制,得秉承这个思路
- 互联网大咖看了都忍不住点赞的电脑配置指南【电脑小白必备】【十年私藏公开分享】
- 网络虚拟化——SR-IOV
- 震惊!我竟然在1080Ti上加载了一个35亿参数的模型(ZeRO, Zero Redundancy Optimizer)
热门文章
- 锐龙R3-3200G 配什么主板
- Xilisoft Video Converter Ultimate 6 keys
- python代码库能干什么_一行Python代码能做什么?
- 在线考试系统网站 毕业设计毕设源码毕业论文开题报告参考(1)功能概要
- htc+one+m7+linux驱动,HTC One(M7)的驱动下载
- 深入理解SVM,详解SMO算法
- 大一微积分笔记整理_微积分大一基础知识经典讲解
- katalon studio 安装教程
- Restorator 2005 v3.51 b1457
- 【历史上的今天】11 月 18 日:DNS 发明者出生;按键式问世;比尔·盖茨开始编程