浅谈MVC和MVVM

MVC本很美好,但到了iOS下变得不那么美好了,为什么这么说呢?
我眼里的MVC
M :
Model 首先他不是实体,他主要作用是来处理业务逻辑的,他负责网络请求,组织数据,逻辑处理后通过XXX方式通知给VC。
V:
View很显然他只负责拿数据显示
C:
ViewController 拿Model加工好的数据供View显示,当中间协调者的作用

VC持有Model和View,因为是强依赖直接调用对象提供的方法
反而Model和View对VC没有依赖所以对VC的通信过程相对比较艰难
常用delegate,block,target-Action,protocol,KVO,通知等手段来通信

看起来挺好的,实际上也挺好
那为什么很多人说他不好呢,因为他们发现这种模式下VC变得很臃肿,
为什么会臃肿?
因为你没有严格执行MVC思想
因为很少有人单独给View弄一个层提供VC持有
为什么呢?
问题关键点是iOS里VC天然持有View,苹果也鼓励我们直接当这个View容器来上面添加子View
这就比较矛盾了,MVC让我们分3层,你们VC和View竟然在一起
这么以来VC里写很多关于View的代码
View的addsubview要写在VC里
View的action和实现逻辑要写在VC里
View的赋值也要写在VC里
那错在谁?
其实谁都没错,因为MVC其实提供的只是思想

因为VC直接持有View,平时开发中我们很少创建单独View类来管理View逻辑
所以VC的臃肿是避免不了(这里很多人以为VC臃肿是因为里面做了网络请求)
这种背景下出现了MVVM

MVVM
M:
Model 还是那个Model。
VM:
处理本应该VC处理的业务逻辑
View/VC:负责显示

再来跟MVC比较一下
Model View VC
Model ViewModel View/VC
整理下他们的区别
View和VC变一个后又多出了ViewModel
抛开表面上的区别我们真正要关注的应该是MVVM里弱化了VC的存在,强化了ViewModel
这是因为ViewModel抽离了VC的业务逻辑
那么问题来了为什么这么做呢?
仅仅是为了VC的瘦身?

要知道软件设计里复用思想是无处不在,即便你现在用不上,我们应该长远的角度上考虑,万一以后要用到呢?
MVC里我们无法复用VC,除非界面功能一模一样。但MVVM的ViewModel可以做到的
所以说MVVM的出现是恰恰解决这个问题
1.VC类天然持有View -》VC和View一起对待
2.VC逻辑无法使用 -》 VC逻辑抽离到ViewModel 通过ViewModel复用,‘顺便’给VC瘦身

当然随着时间推移对这些架构模式的理解也会有所不同,
这只是个人理解

继续
在MVVM的架构上大家习惯把网络请求放在ViewModel里然后Model当作实体使用,
个人理解的MVVM里这种操作是错误的,
因为VM只是是VC的逻辑抽离,VC本身不应该是发送网络请求,所以按这个逻辑VM也不应该发送网络请求。
可以简单的总结MVVM也是MVC,只是他的增强版本而已

当然不管mvc还是mvvm,不管你在哪里发网络请求,架构是死的人的思想是活的,
我们可以抛开架构的限制适当结合自己的业务做自己的发挥,当然这前提是要符合优秀的程序设计要求(面向对象的三大基本特征,五大基本原则)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345