《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开发环境中可以很容易地创建结构良好的应用程序。

时间: 2024-11-03 20:17:00

《iOS 8开发指南(第2版)》——第6章,第6.1节MVC模式基础的相关文章

《iOS 8开发指南》——第6章,第6.1节MVC模式基础

第6章 使用Xcode编写MVC程序 iOS 8开发指南 在本书前面的内容中,已经学习了面向对象编程语言Objective-C的基本知识,并且探索了Cocoa Touch.Xcode和Interface Builder编辑器的基本用法.虽然我们已经使用了多个创建好的项目,但是还没有从头开始创建一个项目.在本章的内容中,将向读者详细讲解"模型-视图-控制器"应用程序的设计模式,并从头到尾创建一个iOS应用程序的过程,为读者步入本书后面知识的学习打下基础. 6.1 MVC模式基础 iOS

《iOS 9 开发指南》——第6章,第6.8节实战演练——将设计界面连接到代码

6.8 实战演练--将设计界面连接到代码iOS 9 开发指南经过本章前面内容的学习,已经掌握了创建界面的基本知识.但是如何才能使设计的界面起作用呢?在本节的内容中,将详细讲解将界面连接到代码并让应用程序运行的方法. 6.8.1 打开项目首先,我们将使用本章Projects文件夹中的项目"lianjie".打开该文件夹,并双击文件"lianjie.xcworkspace",这将在Xcode中打开该项目,如图6-26所示. 加载该项目后,展开项目代码编组(Disconn

《iOS 9 开发指南》——第1章,第1.1节IOS开发入门

第1章 IOS开发入门 iOS 9 开发指南 iOS是一个强大的系统,被广泛地应用于苹果公司的系列产品iPhone.iPad和iTouch设备中.iOS通过这些移动设备展示了一个多点触摸界面及众多内置传感器的界面.本章将带领大家认识iOS系统,为读者步入本书后面知识的学习打下基础. 1.1 iOS系统介绍 iOS 9 开发指南 图片 1 知识点讲解:光盘:视频\知识点\第1章\ iOS系统介绍.mp4 iOS是由苹果公司开发的手持设备操作系统.苹果公司最早于2007年1月9日的Mac World

《iOS 9 开发指南》——第1章,第1.4节iOS 9中的常用开发框架

1.4 iOS 9中的常用开发框架 iOS 9 开发指南 图片 2 知识点讲解:光盘:视频\知识点\第1章\ iOS 9中的常用开发框架.mp4 为了提高开发iOS程序的效率,除了可以使用Xcode集成开发工具之外,还可以使用第三方提供的框架,这些框架为我们提供了完整的项目解决方案,是由许多类.方法.函数和文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易.在OSX下的Mac操作系统中,大约存在80个框架,这些框架可以用来开发应用程序,处理Mac的Address Book结构.刻制CD.

《iOS 8开发指南》——第6章,第6.3节在Xcode中实现MVC

6.3 在Xcode中实现MVC iOS 8开发指南 在本书前面的内容中,已经讲解了Xcode及其集成的Interface Builder编辑器的知识.并且在本书上一章的内容中,曾经将故事板场景中的对象连接到了应用程序中的代码.在本节的内容中,将详细讲解将视图绑定到控制器的知识. 6.3.1 视图 在Xcode中,虽然可以使用编程的方式创建视图,但是在大多数情况下是使用Interface Builder以可视化的方式设计它们.在视图中可以包含众多界面元素,在加载运行阶段程序时,视图可以创建基本的

《iOS 9 开发指南》——第1章,第1.3节工欲善其事,必先利其器——搭建开发环境

1.3 工欲善其事,必先利其器--搭建开发环境 iOS 9 开发指南 图片 2 知识点讲解:光盘:视频\知识点\第1章\搭建开发环境.mp4 学习iOS 9开发也离不开好的开发工具的帮助,如果使用的是OS X El Capitan系统,下载iOS 9开发工具将很容易,只需通过简单地单击操作即可.为此,在Dock中打开Apple Store,搜索Xcode 7并免费下载它,坐下来等待Mac下载大型安装程序(约5GB).如果你使用的不是OS X El Capitan系统,可以从iOS开发中心(htt

《iOS 9 开发指南》——第6章,第6.1节Interface Builder基础

6.1 Interface Builder基础 iOS 9 开发指南 图片 1 知识点讲解:光盘:视频\知识点\第6章\Interface Builder基础.mp4 通过使用Interface Builder(IB),可以快速地创建一个应用程序界面.这不仅是一个GUI绘画工具,而且还可以在不编写任何代码的情况下添加应用程序.这样不但可以减少bug,而且可以缩短开发周期,并且让整个项目更容易维护. IB向Objective-C开发者提供了包含一系列用户界面对象的工具箱,这些对象包括文本框.数据表

《iOS 8开发指南》——第6章,第6.5节实战演练——使用模板Single View Application

6.5 实战演练--使用模板Single View Application iOS 8开发指南 Apple在Xcode中提供了一种很有用的应用程序模板,可以快速地创建一个这样的项目,即包含一个故事板.一个空视图和相关联的视图控制器.模板Single View Application(单视图应用程序)是最简单的模板,在本节的内容中将创建一个应用程序,本程序包含了一个视图和一个视图控制器.本节的实例非常简单,先创建了一个用于获取用户输入的文本框(UITextField)和一个按钮,当用户在文本框中输

《iOS 8开发指南(第2版)》——第6章,第6.5节实战演练——使用模板Single View Application

6.5 实战演练--使用模板Single View Application iOS 8开发指南(第2版) Apple在Xcode中提供了一种很有用的应用程序模板,可以快速地创建一个这样的项目,即包含一个故事板.一个空视图和相关联的视图控制器.模板Single View Application(单视图应用程序)是最简单的模板,在本节的内容中将创建一个应用程序,本程序包含了一个视图和一个视图控制器.本节的实例非常简单,先创建了一个用于获取用户输入的文本框(UITextField)和一个按钮,当用户在