好了,我做大死的连续第五天奋斗在电脑跟前了,好的。html
接着上次写的iOS开发框架MVVM 1理解开发模式(占坑,未写完)来继续聊聊咱们的MVVM。ios
昨天聊了网络层的封装,今天聊聊开发模式,架构师应该干的事情。我一个编程界的新手也想聊聊,昨天说了要作高素质的流氓。今儿只是聊聊我对MVC和MVVM的感觉和想法,具体的概述看我第一篇介绍。由于打字的时候就不会乱七八糟的想一些事情了。面试
再次强调。今天只聊思想,概述,国庆结束以前必定上代码,纯干货。保证你能上手简单的MVVM。数据库
开始今天的话题。编程
为何先聊Model,由于不管是MVC仍是MVVM。都有一个是统一的,那就是Model。json
仍是那句话,全聊我本身的思考和见解。和专业的解释有差距还轻喷。网络
以前也说过我对Model的理解,今天从新聊聊什么是Model。我以为作后台的同窗能够更好的理解Model。Model就是一系列和数据库有关的东西,对数据的操做等等。架构
那么在iOS里呢。框架
在任何一个App里都会有数据获取的地方。在iOS里就是Model层。mvvm
后台给咱们传输数据的时候传输的都是json数据,那么咱们必需要将json转model。这也是大公司面试喜欢问的,怎么json转Model。
说到这,必需要说个东西。对象。
json转换成Model,其实就是将json转换成一个对象。而后对这个对象进行操做。咱们获得Model以后就能够用"."操做符来对Model里的属性进行操做了。
json转Model以后,咱们的Model层里就有了数据。
因此说,不少状况下,咱们称为Model为模型,前段时间上软件工程这门课,老师好像是说叫数据层,我以为这个称呼很是的合理。
咱们常说解析json解析json,类比后台的建表,咱们的Model实际上就是把建表变成了json的映射而已。
固然,若是只把Model层解释为json数据的解析,确定是有问题的。当咱们从本地数据库取数据的时候,仍是须要用Model来解析,这基本上和后台就更像了,可是不一样的是,咱们把本地数据库里的数据取出来以后,在此转换为一个对象。而后去使用。
最后来总结一下Model。Model层能够没有吗,固然不能,由于不管是后台开发仍是App,Model层是一切数据的来源。数据来了才能有一个完成的App。但实际上来讲,咱们调用Model层的语句可能不多。最主要代码仍是集中在VC或者是VVM。
为何不直接聊MVC,由于MVC是大众开发iOS的模式。不管是后台仍是iOS,虽说iOS的MVC和后台的有差异,可是仍是没啥好说的。是个iOS开发都知道MVC。在此也不作过多的阐述。
直接聊聊iOS中MVC的弊端。实际上能够说只聊聊VC。
我只写过一点点Rails。先来讲说我对Rails的MVC的见解,再和iOS的MVC一比较,立马就看出弊端了。
在rails中,C是对于View中的方法进行描述。举个最简单的例子,咱们在View中须要实现index,列出全部文章的列表。那么就在C中写index函数的定义就行了。不用在View里写任何东西。
而View,就是你所看到的html网页。只须要加上简单的触发动做等等就ok。
好了,到这大概能明白View和C的关系了。
下面来讲说iOS中的MVC
MVC,实际上的为的就是让各个层次负责不一样的任务。那么View,Controller应该分开。
可是在iOS中,咱们的View视图和Controller是在一块儿的!咱们只能经过对View的抽象来调用,可是免不了在Controller里写下大量的View代码。
这就是问题了。
以前的一篇博客也聊过这个问题。
因此针对Controller和View分不开的问题,根据WF的架构方式,提出了MVVM。
那么,今天的半干货部分。自此开始。
想了一下,与其废话半天说MVVM和MVC不如直接解释MVVM每部分到底在干吗,这样一说,立马就知道MVVM的好处了。
在MVC中,占据咱们很大代码量的是什么。一是大量的View视图,二是大量的网络请求,三是部分逻辑。
而在MVVM中,咱们的ViewModel层干啥,一是作网络请求,二是逻辑的实现
我不贴图了,我以为看了那么多文章都不如直接说每部分是干什么的这样直接了当。
因此综合比较一下。下面MVC分别用M1,V1,C1来表示,MVVM用M2,V2,VM2来表示,看看发生了什么变化。
M1->M2 没变化
C1->V2 之后iOS中的ViewController便是今天的View。少了网络请求和逻辑处理部分,只对View进行操做
V1->V2 对于我我的来讲,之后我会再单独抽象一个View在MVVM中来处理Common的View还有须要封装的View。
C1->VM2 这里VM2,只进行逻辑和网络请求等等。
那么,在MVVM中最重要的是什么?是数据的绑定。
具体能够看WF的架构。
咱们采用RAC是为了将MVVM中的三个部分的数据进行绑定,一旦某个部分的数据有改变,那么绑定的另外一个界面的数据就会改变。
好的,其实真正关键的没多少话,都标记了。这些大概明白,后面进行起来就快了。
这我会在后面的博客开始叙述的。
这系列的博客想干什么。
对最近学习MVVM的一个总结。
MVVM困惑了我快一年了,我想采用这种新的开发模式来开发了。
我想用最通俗的语言,一个学生党的语言来更快的让你上手MVVM。
让创萌工做室之后的iOS开发能够更快的学习iOS开发。
我会一点点的来解释ViewModel层在干什么。这是第一篇博客,理论部分已经普及差很少了。
下一部分,咱们开始利用RAC来分离业务逻辑的代码。后面的文章每篇文章会上代码上demo,也不写多内容,每次一点点,多写几篇博客。
我相信我写完你看完,咱们都能征服MVVM!