《iOS 8开发指南(第2版)》——第6章,第6.1节MVC模式基础
本节书摘来自异步社区《iOS 8开发指南(第2版)》一书中的第6章,第6.1节MVC模式基础,作者 管蕾,更多章节内容可以访问云栖社区“异步社区”公众号查看
6.1 MVC模式基础
iOS 8开发指南(第2版)
当我们开始编程时,会发现每一个功能都可以用多种编码方式来实现。但是,究竟哪一种方式才是最佳选择呢?在开发iOS应用程序的过程中,通常使用的设计方法被称为“模型—视图—控制器”模式,这种模式被简称为MVC,通过这种模式可以帮助我们创建出简洁、高效的应用程序。
6.1.1 诞生背景
在创建与用户交互的应用程序时,首先必须考虑如下3点。
用户界面:我们必须提供让用户能够与之交互的东西,例如,按钮和文本框等。
对用户输入进行处理并做出反应。
应用程序必须存储必要的信息以便正确地响应用户,这通常是以数据库方式存储的。
为了结合这几个方面,一种方法是将它们合并到一个类中:将显示界面的代码、实现逻辑的代码以及处理数据的代码混合在一起。这是一种非常直观的开发方法,但在多个方面束缚了开发人员。
当众多的代码混合在一起时,多个开发人员难以配合,因为功能单元之间没有明确的界线。不太可能在其他应用程序中重用界面、应用程序逻辑和数据,因为这三方面的组合因项目而异,在其他地方不会有大的用处。总之,混合代码、逻辑和数据将导致混乱。而我们希望iOS应用程序与此相反,解决之道便是使用MVC设计模式。
6.1.2 分析结构
MVC最初存在于Desktop程序中,M是指数据模型、V是指用户界面、C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。
MVC即“模型-视图-控制器”,是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用,特别是ColdFusion和PHP的开发者。
MVC是一个设计模式,它能够强制性地使应用程序的输入、处理和输出分开。使用MVC的应用程序被分成3个核心部件,分别是模型、视图、控制器。具体说明如下所示。
1.视图
视图是用户看到并与之交互的界面。对于老式的Web应用程序来说,视图就是由HTML元素组成的界面。在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和像XHTML、XML/XSL、WML等一些标识语言和Web Services。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
2.模型
模型表示企业数据和业务规则。在MVC的3个部件中,模型拥有最多的处理任务。例如,它可能用像EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
3.控制器
控制器用于接受用户的输入并调用模型和视图去完成用户的需求。所以,当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。
现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
6.1.3 MVC的特点
MVC是所有面向对象程序设计语言都应该遵守的规范,MVC思想将一个应用分成3个基本部分:Model(模型)、View(视图)和Controller(控制器),这3个部分以最少的耦合协同工作,从而提高了应用的可扩展性及可维护性。
在经典的MVC模式中,事件由控制器处理,控制器根据事件的类型改变模型或视图。具体来说,每个模型对应一系列的视图列表,这种对应关系通常采用注册来完成,即把多个视图注册到同一个模型,当模型发生改变时,模型向所有注册过的视图发送通知,视图从对应的模型中获得信息,然后完成视图显示的更新。
MVC模式具有如下4个特点。
(1)多个视图可以对应一个模型。按MVC设计模式,一个模型对应多个视图,可以减少代码的复制及代码的维护量,一旦模型发生改变易于维护。
(2)模型返回的数据与显示逻辑分离。模型数据可以应用任何的显示技术,例如,使用JSP页面、Velocity模板或者直接产生Excel文档等。
(3)应用被分隔为3层,降低了各层之间的耦合,提供了应用的可扩展性。
(4)因为在控制层中把不同的模型和不同的视图组合在一起完成不同的请求,由此可见,控制层包含了用户请求权限的概念。
MVC更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码。
6.1.4 使用MVC实现程序设计的结构化
通过使用MVC模式,在应用程序的重要组件之间定义了明确的界线。MVC模式定义了应用程序的如下3个部分。
(1)模型提供底层数据和方法,它向应用程序的其他部分提供信息。模型没有定义了应用程序的外观和工作方式。
(2)用户界面由一个或多个视图组成,而视图由不同的屏幕控件(按钮、文本框、开关等)组成,用户可与之交互。
(3)控制器通常与视图配对,负责接受用户输入并做出相应的反应。控制器可访问视图并使用模型提供的信息更新它,还可使用用户在视图中的交互结果来更新模型。总之,它在MVC组件之间搭建了桥梁。
令我们开发者振奋的是,Xcode中的MVC模式是天然存在的,当我们新创建项目并开始编码时,会自动被引领到MVC设计模式。由此可见,在Xcode开发环境中可以很容易地创建结构良好的应用程序。
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
《iOS 6高级开发手册(第4版)》——2.4节秘诀:展示活动视图控制器
本节书摘来自异步社区《iOS 6高级开发手册(第4版)》一书中的第2章,第2.4节访问基本的设备信息,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.4 秘诀:展示活动视图控制器iOS 6高级开发手册(第4版)iOS 6新引入的活动视图控制器可以把数据活动集成进图2-4所示的界面中。你只需付出最少的开发成本,这种新型控制器就允许你的用户把项目复制到粘贴板上,发布给社交媒体,以及通过电子邮件和文本共享它们等。内置的活动包括:Facebook(脸书)、Twitter(推特)、Weibo(微博)、SMS、邮件、打印、复制到粘贴板以及把数据分配给联系人。应用程序也可以定义它们自己的自定义服务,在本节后面可以了解这一点: UIActivityTypePostToFacebook UIActivityTypePostToTwitter UIActivityTypePostToWeibo UIActivityTypeMessage UIActivityTypeMail UIActivityTypePrint UIActivityTypeCopyToPast...
-
下一篇
《深入解析Android 虚拟机》——第2章,第2.4节网络移动性
本节书摘来自异步社区《深入解析Android 虚拟机》一书中的第2章,第2.4节网络移动性,作者 钟世礼,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.4 网络移动性长久以来,如何开发网络软件是Java开发人员所面临的最大挑战之一。在网络领域需要实现平台无关性,因为同一网络中通常连接了多种不同的计算机和设备。除此之外,安全模式也是一个挑战,因为网络可以方便地传输病毒和其他形式的恶意代码。在本节将详细讲解Java如何把握网络所带来的巨大机遇,为步入本书后面知识的学习打下基础。 2.4.1 现实需要网络移动性当个人计算机互联成网变得越来越普遍的时候,另一种软件模式日益重要起来,即“客户机/服务器”模式。“客户机/服务器”模式将任务分为两部分,分别运行在两种计算机上:客户端进程运行在终端用户的个人计算机上,而服务器端进程运行在同一网络的另一台计算机上。客户端和服务器端的进程通过网络来回发送数据进行传输。服务器端进程通常只是简单地接收网络中客户端发来的数据请求命令,从中央数据库中提取需要的数据,并将该数据发送给客户端。而客户端在接到数据后,进行处理,然后显示并允许用户操作数据。这样的...
相关文章
文章评论
共有0条评论来说两句吧...

微信收款码
支付宝收款码