资讯专栏INFORMATION COLUMN

iOS开发框架MVVM 1理解开发模式

TigerChain / 2547人阅读

摘要:接着上次写的开发框架理解开发模式占坑,未写完来继续聊聊我们的。聊聊的弊端为什么不直接聊,因为是大众开发的模式。困惑了我快一年了,我想采用这种新的开发模式来开发了。让创萌工作室以后的开发可以更快的学习开发。

好了,我作大死的连续第五天奋斗在电脑跟前了,好的。

接着上次写的iOS开发框架MVVM 1理解开发模式(占坑,未写完)来继续聊聊我们的MVVM。

昨天聊了网络层的封装,今天聊聊开发模式,架构师应该干的事情。我一个编程界的新手也想聊聊,昨天说了要做高素质的流氓。今儿只是聊聊我对MVC和MVVM的感受和想法,具体的概述看我第一篇介绍。因为打字的时候就不会乱七八糟的想一些事情了。

再次强调。今天只聊思想,概述,国庆结束之前一定上代码,纯干货。保证你能上手简单的MVVM。

开始今天的话题。

首先聊聊Model

为什么先聊Model,因为不论是MVC还是MVVM。都有一个是统一的,那就是Model。

还是那句话,全聊我自己的思考和看法。和专业的解释有差距还轻喷。

之前也说过我对Model的理解,今天重新聊聊什么是Model。我觉得做后台的同学可以更好的理解Model。Model就是一系列和数据库有关的东西,对数据的操作等等。

那么在iOS里呢。

在任何一个App里都会有数据获取的地方。在iOS里就是Model层。

后台给我们传输数据的时候传输的都是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,因为MVC是大众开发iOS的模式。无论是后台还是iOS,虽然说iOS的MVC和后台的有差别,但是还是没啥好说的。是个iOS开发都知道MVC。在此也不做过多的阐述。

直接聊聊iOS中MVC的弊端。实际上可以说只聊聊VC。

我只写过一点点Rails。先来说说我对Rails的MVC的看法,再和iOS的MVC一比较,立马就看出弊端了。

Rails的MVC

在rails中,C是对于View中的方法进行描述。举个最简单的例子,我们在View中需要实现index,列出所有文章的列表。那么就在C中写index函数的定义就好了。不用在View里写任何东西。

而View,就是你所看到的html网页。只需要加上简单的触发动作等等就ok。

好了,到这大概能明白View和C的关系了。

下面来说说iOS中的MVC

iOS的MVC

MVC,实际上的为的就是让各个层次负责不同的任务。那么View,Controller应该分开。

但是在iOS中,我们的View视图和Controller是在一起的!我们只能通过对View的抽象来调用,但是免不了在Controller里写下大量的View代码。

这就是问题了。

之前的一篇博客也聊过这个问题。

所以针对Controller和View分不开的问题,根据WF的架构方式,提出了MVVM。

那么,今天的半干货部分。自此开始。

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!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/15873.html

相关文章

  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?

    摘要:中国互联网络信息中心发布的中国互联网络发展状况统计报告显示,截至年月,我国网民规模达亿人,微信月活亿支付宝月活亿百度月活亿另一方面,中国手机占智能手机整体的比例超过,月活约亿。在年末正式发布了面向未来的跨端的。 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的? 原创: 嘉宾-张楠 开源中国 以往我们说某一功能跨多端,往往是指在诸如 PC、移动等不同类型的设备之...

    GraphQuery 评论0 收藏0
  • iOS 架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译)

    原文地址:https://blog.coding.net/blog/ios-architecture-patterns Make everything as simple as possible, but not simpler — Albert Einstein 把每件事,做简单到极致,但又不过于简单 - 阿尔伯特·爱因斯坦 在使用 iOS 的 MVC 时候感觉怪怪的?想要尝试下 MVVM?...

    gxyz 评论0 收藏0
  • 路由 - 收藏集 - 掘金

    摘要:接下来会发布关于全景视频播放器文章,现在主要是在封装播放器一文件组件化路由设计思路分析掘金前言随着用户的需求越来越多,对的用户体验也变的要求越来越高。 iOS 模式详解—「runtime 面试、工作」看我就 ? 了 ^_^. - iOS - 掘金Write in the first【写在最前】 对于从事 iOS 开发人员来说,当提到 runtime时,我想都可以说出来 「runtime...

    philadelphia 评论0 收藏0
  • 关于iOS中MVC和MVVM的区别和联系

    摘要:在这种设计模式中,我们发现和都是符合这种原则的。监听层的事件,并且将层的事件转发到层。将数据获取和转换的逻辑分别到另外一个类中。方便在基类中处理公共逻辑,例如猿题库的数据版本号信息就统一在基类中处理。对此,的作者的批评应该是最为中肯的。 MVC 的历史 MVC,全称是 Model View Controller,是模型 (model)-视图(view)-控制器 (controller)...

    justCoding 评论0 收藏0
  • MVC,MVP,MVVM浅析

    摘要:的模式之间不同主要是与的数据传递的流程不同。所以无论是复杂化简单化还是修改流程,基本都是因为技术栈变化了对应做的调整。实例实际项目往往采用更灵活的方式,以为例。用户可以向发送指令事件,再由直接要求改变状态。与不发生联系,都通过传递。 概述 M -V- X 本质都是一样的 重点还是在于M-V 的桥梁要靠 X来牵线。 X的模式之间不同 主要是 M与V 的数据传递的流程不同。数据传递的流程不...

    Vultr 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<