刚刚在线

分享iOS开发技术经验的自媒体网站

浅析MVC和说媒的过程

什么是MVC?

MVC 全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面 显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

图解MVC(斯坦福公开课的课件)

看了上面的MVC定义和图解,对MVC有了初步的了解,特别是斯坦福这个课件,讲的非常到位。但是在实际开发过程中,却感觉离MVC的标准越来越远。

我也看过一些朋友写的iOS项目,看之前问MVC,都讲的头头是道,但是在项目中却体现的不是那么好。我自己写项目也是,理论上是理解了MVC的模式,但是真去写代码,还是觉得,有些地方不到位。

特别是C(我们就把UIViewController当做C来看,网上有对C的其他解释)显得别急臃肿。有时候C里面代码几千行(并不是说代码过千就是不符合MVC),C干了很多M干的事,同时也干了很多V要干的事。

这几天我看了一个项目(AFNetworking的作者写的DEMO,大家可以到github上下载),觉得MVC用的非常到位。每一步都是很周到,M和C的对接,V和C的对接,做到非常到位。

对于MVC,我说说我的理解,俗一点讲:媒婆说没得过程。M -> 男人 , V -> 女人 , C -> 媒婆。

C(媒婆) 要给 M(男人) 介绍个女朋友 V (女人),C 是一个桥梁起着对接的作用, M 和 V 本是不认识的两个人,不能直接沟通。

说媒过程是这样的:C 给 M 说,第一次见女孩子,你要给女孩子准备什么礼物吧?

这个时候,M 肯定不会说,这点小事,你还来麻烦我,自己去买吧,那估计媒婆气都气死了,这事肯定成不了。(写代码的时候,不要让C干M得事)

这事必须 M 自己去做,M 买东西就是处理数据得过程。买东西怎么去买?多少钱?怎么讲价?这都是 M 自己要去干的事。最终结果是 M 买来礼物,礼物就是我们编程过程中 Model所产生的对象。

礼物买来了,M 也不认识 V ,肯定也不知道怎么送给 V,所以这个时候 C 的作用就体现出来了,M 要把 买来的礼物(Object)交给C,让C帮忙送给 V。

就这样,V 拿到礼物,觉得不错,就自己用了。

回想一下这个过程:C 发起一个请求,买礼物。M 知道之后,就去执行这件事,最终买来礼物。M 脱 C 把礼物送给V。一个完整的请求数据,展示数据的过程。

虽然有点俗,但是还是有一定道理的。

后面时间允许的话,我会详解一下AFNetworking的作者写的DEMO。看看MVC在项目的体现到底是什么样的。

我的微信公众号 iOS开发 :

iOSDevTip