浅析IOS中的MVC

原创 2013年12月03日 19:46:21

                                                                          浅析IOS中的MVC

       在IOS操作系统越来越流行的现今,越来越多的用户使用IOS操作系统,同时也有越来越多的人学习IOS操作系统,但是很多人并不明白在IOS中MVC是什么?接下来,我们将详细的介绍了到底什么才是MVC。

1、什么是MVC?

越来越多的开发者们专注于ios的开发,他们开发的相当一大部分应用软件都给人以美的享受,究竟是什么使得ios上的应用可以如此漂亮?因为他们使用了将代码和界面分开的开发结构框架MVC

MVC即是Model-VIew-Controller三个英文单词的缩写,中文翻译为模型视图控制器MVC并非只有ios应用软件独有的应用开发模式,它被广泛应用在许多软件(尤其是中大型软件)的开发上。MVC把软件系统分为三个部分:ModelViewControllerModel相当于应用的底层,应用在功能上的实现完全依赖于Model,打个比方,如果是一台电脑的话,Model就是你机箱里的所有东西:cpu,内存,硬盘,显卡等的一个集合,你不必看到它们,但它们必不可少;Controller就是控制器,它控制ModelView的交互,它将MV捆绑在一起,将你的操作传达给Model,再控制View将其表现出来。View相当于电脑的图形界面,将Model的运行结果可视化地呈现给用户,你在屏幕上看到的一切都可以归类于View

cocoa中,你的程序中的每一个object(对象)都将明显地仅属于这三部分中的一个,而完全不属于另外两个。因此,用MVC开发的应用软件更易于进行维护和修改,不用因为底层的Model出了问题而去影响表层的ViewMVC虽然把三部分独立了出来,但三部分之间仍然存在联系,但就如下图所示,ModelView之间是完全独立的,两者各自运行,以Controller为桥梁进行交互,并不发生直接关联。接下来我们用下面这张图来简单讲解一下MVC之间是如何进行交互的。

2、MVC交流方式:

如上文所讲,MV之间是双黄线,在交通法规方面我们都知道,双黄线是完全禁止超车的,MV也是,两者不存在任何直接交互。存在直接交互的只有MC之间与CV之间。首先我们来看MC的交互,如图所示,有一条绿色的箭头从C发起指向了M,代表了CM之间的交互应该首先从Controller发起,C首先向M提出自己的需求,再由M作出响应。C具有导入M头文件的API,因此C可以知晓M的一切内容,如同图中的那一条白色的虚线。再来看看相对复杂的CV之间的交互,这次我们仍然从绿色的箭头开始了解,箭头仍然由C发起,可见CV之间的交互依旧由Controller发起,但箭头起始端写了outlet一个词,意思是“输出口”,outlet可以看作是从C指向V的指针,它在C中被定义。outlet给我们提供了很大的方便,它使我们在C的内部就可以轻松准确地向V施令。C可以拥有很多的outlet,可以不止一个,这也使它可以更高效的和V进行交流。

接下来我们再来了解一下VC之间是如何进行交流的。V能通过三种方法与C进行交流,分别对应了链接CV的三条黄线。从左到右分别叫做数据源(data source)、委托(delegate)和目标操作(target-action)。View是不能拥有数据的,所以当需要显示数据的时候,View会发送出请求,以获得所需要的数据,这种方法就被称作数据源。第二种方法叫做委托,C把自己设置为V的委托(delegate),它让V知道:如果V想知道更多的关于将如何显示的信息的话,就向C发送delegate信息,大多数委托信息包括三种形式:“应该做吗?(should)”、“将要做(will)”和“已经做了(did)”。通过接受V发过来的delegate信息,C就会做出相应的协调和处理。第三种方法叫目标操作,图上表现得非常形象,C中会出现一个“靶子”,由V发出动作命中靶子完成操作,这一点可以更加形象地表示,“靶子”相当于我们在屏幕上看到的按钮,当我们按下按钮时,V发出了action,命中了C的目标时,C再调用相应的函数和类向M发出要求。

CMV之间的联系都是白色虚线,因此C能轻易的了解到MV中的全部信息。反过来,MCVC之间的联系是白色实线,区别于MV之间的黄色实线,原因是原则上MV虽不能直接影响C,但是当MV中的东西发生变化时,MV需要告诉C,因此,这里就需要cocoa中的KVOnotification机制,它们能将变化发送给C,区别只是notification是需要一个发送notification的对象来通知观察者,而kvo是直接通知到观察对象。

3、总结:

MVC的低耦合性、高重用性、可维护性等优点显而易见,使得原本复杂的代码与界面的交互变得简单、清晰、明了,开发者可以把更多的精力放在前端界面的设计上,而不用绞尽脑汁去思考究竟应该如何使界面得到同步,这样减轻了设计压力,也从另一方面使用户得到更多更好的享受体验。纵观ios经典Native App的所有应用软件,几乎都具有一个很大特点,那就是“炫”。清新的画面配以简单的手势操作,颠覆着用户的思维方式,小巧精悍。

在最初的JSP网页中,像数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起。经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心地计划和不断的尝试。MVC从根本上强制性地将它们分开。尽管构造MVC应用程序需要一些额外的工作,但是它带给我们的好处是毋庸置疑的。

多个视图能共享一个模型。如今,同一个Web应用程序会提供多种用户界面,例如用户希望既能够通过浏览器来收发电子邮件,还希望通过手机来访问电子邮箱,这就要求Web网站同时能提供Internet界面和WAP界面。控制器连接不同的模型和视图去完成用户的需求,也可以构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型机型处理,然后选择适当的视图将处理结果显示给用户。在MVC设计模式中,模型响应用户请求并返回响应数据,视图负责格式化数据并把它们呈现给用户,业务逻辑和表示层分离,同一个模型可以被不同的视图重用,所以大大提高了代码的可重用性。

过去MVC模式并不适合小型甚至中等规模的应用程序,这样会带来额外的工作量,增加应用的复杂性。但现在多数软件设计框架,能直接快速提供MVC骨架,供中小型应用程序开发,此问题不再存在。对于开发存在大量用户界面,并且逻辑复杂的大型应用程序,MVC将会使软件在健壮性、代码重用和结构方面上一个新的台阶。尽管在最初构建MVC模式框架时会花费一定的工作量,但从长远的角度来看,它会大大提高后期软件开发的效率。

好的应用需要有好的体验,MVC模式正式为了提升用户体验而诞生的一种软件开发模式,虽然分离出MVC需要巧妙的构思以及完成更多的工作,但它更有利于软件的工程化管理,不同的层各司其职,使得软件的维护以及日后的升级更加从容与方便。在飞速发展的电子领域,技术的进步如白驹过隙,MVC要想获得巩固的地位,只要能更好地解决层与层之间的分离工作,不只是移动终端,MVC模式肯定将是日后软件开发的主流。

相关文章推荐

ios MVC模式浅析

一、MVC模式指的是什么?1、解释: MVC的全称是Model View Controller ,是模型(model)–视图(view)–控制器(controller),他表示一种常见客户端软件开发框...

iOS 多线程 GCD浅析

  • 2016年01月07日 12:57
  • 59KB
  • 下载

浅析JSR303 验证作用、使用及使用场景、spring mvc下使用JSR303

一、JSR-303简介 JSR-303 是 Java EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator。 此实现与 Hi...

浅析前端开发中的 MVC/MVP/MVVM 模式

MVC,MVP和MVVM都是常见的软件架构设计模式(Architectural Pattern),它通过分离关注点来改进代码的组织方式。不同于设计模式(Design Pattern),只是为了解决一类...

android的四层体系结构,基于mvc三层结构浅析

从多方面理解Android体系结构

浅析MVC模式与三层架构的区别

三层架构和MVC是有明显区别的,MVC应该是展现模式(三个加起来以后才是三层架构中的UI层) 三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(...

MVC浅析(实际上应该是MVP,有时间再更新该博客)

以Android中登录过程为例简单说明,其他应用场景同理。 定义接口: Model层:IModelLogin.javapublic interface IModelLogin { /** ...
  • xu_vv
  • xu_vv
  • 2015年09月17日 17:05
  • 174

浅析MVC和MVP

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。 MVP框架模式将Model模型和View视图分离,从而使得代码的...

MVC、MVVM、MVP 框架设计模式浅析

传统模式下的开发 MVC MVVM 基于面向协议MVP的介绍 MVP实战开发 说在前面: 相信就算你是个iOS新手也应该听说过MVC的,MVC是构建iOS App的标准模板。随着时间的推移...

ASP.NET MVC 浅析

学习ASP.NET已经很久了,一直以来觉得ASP.NET 的MVC模式和WinForm的三层架构差不多。每次老师讲到MVC的时候都是略过不讲的,所以仅仅凭自己的一点点浅薄的认识,就以为MVC就是三层架...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅析IOS中的MVC
举报原因:
原因补充:

(最多只允许输入30个字)