您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 北京iOS开发培训浅谈MVC与MVVM
北京千锋互联科技有限公司版权所有北京iOS开发培训:浅谈MVC与MVVM北京iOS开发培训:浅谈MVC与MVVM。接触iOS开发已有一段时间,自我感觉,苹果公司设计的开发环境还是比较人性化,比较容易上手及理解。在组织大型项目的代码文件时,我们经常实用MVC的设计思想,还有一个现在有点被神话了的MVVM。MVC的概念讲起来非常简单,但是理解和应用起来却非常困难。而MVVM只是由MVC衍生出来的框架,没有想象中的那么神奇。下面我们就先讨论一下MVC设计理念。M(Model)是指业务模型,也就是模型对象;V(View)是指用户界面,也就是视图对象;C(Controller)则是控制器,就是控制器对象。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。模型对象(M)模型对象封装了应用程序的数据,并定义操控和处理该数据的逻辑和运算。例如,模型对象可能是表示游戏中的角色或地址簿中的联系人。用户在视图层中所进行的创建或修改数据的操作,通过控制器对象传达出去,最终会创建或更新模型对象。模型对象更改时(例如通过网络连接接收到新数据),它通知控制器对象,控制器对象更新相应的视图对象。视图对象(V)视图对象是应用程序中用户可以看见的对象。视图对象知道如何将自己绘制出来,并可能对用户的操作作出响应。视图对象的主要目的,就是显示来自应用程序模型对象的数据,并使该数据可被编辑。尽管如此,在MVC应用程序中,视图对象通常与模型对象分离。控制器对象(C)北京千锋互联科技有限公司版权所有在应用程序的一个或多个视图对象和一个或多个模型对象之间,控制器对象充当媒介。控制器对象因此是同步管道程序,通过它,视图对象了解模型对象的更改,反之亦然。控制器对象还可以为应用程序执行设置和协调任务,并管理其他对象的生命周期。模型会把任何数据的变更通知控制器,然后控制器更新视图数据。视图对象通知控制器用户的操作,控制器要么根据需要来更新模型,要么检索任何被请求的数据。以上所述为描述MVC这种设计理念,下面我们再来看一下MVVM的设计理念。那么什么是MVVM呢?其实很简单,MVVM一个MVC的增强版,我们正式连接了视图和控制器,并将表示逻辑从Controller移出放到一个新的对象里,即ViewModel。MVVM听起来很复杂,但它本质上就是一个精心优化的MVC架构,而MVC上面已做介绍。MVVM是Model-View-ViewModel的简写。相对于MVC的历史来说,MVVM是一个相当新的架构,MVVM最早于2005年被微软的WPF和Silverlight的架构师JohnGossman提出,并且应用在微软的软件开发中。当时MVC已经被提出了20多年了,可见两者出现的年代差别有多大。MVVM在使用当中,通常还会利用双向绑定技术,使得Model变化时,ViewModel会自动更新,而ViewModel变化时,View也会自动变化。在使用中,大家对于MVVM以及MVVM衍生出来的框架有一种「敬畏」感。这种「敬畏」感某种程度上就像对神一样,这主要表现在我没有听到大家对于MVVM的任何批评。我感觉原因首先是MVVM并没有很大程度上普及,大家对于新技术一般都不熟,进而不敢妄加评论。MVVM在实际使用中,确实能够使得Model层和View层解耦,但是如果你需要实现MVVM中的双向绑定的话,那么通常就需要引入更多复杂的框架来实现了。但其实MVVM还有不足之处,比如:第一点:数据绑定使得Bug很难被调试。你看到界面异常了,有可能是你View的代码有Bug,也可能是Model的代码有问题。数据绑定使得一个位置的Bug被快速传递到别的位置,要定位原始出问题的地方就变得不那么容易了。第二点:对于过大的项目,数据绑定需要花费更多的内存。某种意义上来说,我认为就是数据绑定使得MVVM变得复杂和难用了。但是,这个缺点同时也被很多人认为是优点。北京千锋互联科技有限公司版权所有以上是对MVVM的简单介绍,如有不足之处,敬请指出。有一些人总是追赶着技术,有什么新技术不管三七二十一立马就用,结果被各种坑。又有一些人,总是担心新技术带来的技术风险,不愿意学习。结果现在还有人在用MRC手动管理引用计数。而我想说,在iOS开发培训的路上,我们需要保持的是一个拥抱变化的心,以及理性分析的态度。在新技术的面前,不盲从,也不守旧,一切的决策都应该建立在认真分析的基础上,这样才能应对技术的变化。
本文标题:北京iOS开发培训浅谈MVC与MVVM
链接地址:https://www.777doc.com/doc-2632807 .html