《MonoTouch开发实践指南》一3.1 构建MonoTouch MVC应用程序

简介: 本节书摘来自华章出版社《MonoTouch开发实践指南》一 书中的第3章,第3.1节,作者:(美)Michael Bluestein,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.1 构建MonoTouch MVC应用程序

使用UIKit的MonoTouch应用程序通常都使用UIView和UIViewController来构建。这些都是用于构建模型-视图-控制器(Model-View-Controller,MVC)设计模式的iOS应用程序的主要类。
将应用程序的特定领域(Domain Specific)信息和应用程序的显示分离开来,通常会给应用程序带来好处。这种设计模式可以帮助开发人员在面对不断变化的功能需求时保持基础代码的稳定,有助于促进代码重用,并使构建单元测试的代码质量更好。MVC模式就是这样一种模式,是许多应用程序开发方案的常用模式。尤其是,CocoaTouch和MonoTouch都要用到大部分API中的MVC设计模式,所以花点时间来学习(复习)MVC及如何在MonoTouch中使用它是值得的。
MVC模式源自20世纪70年代末Trygve Reenskaug在施乐帕罗奥多研究中心(Xerox PARC)所做的工作,它将模型捕获的特定领域信息与给用户显示的信息分离开来。用户通常是指使用应用程序的人,但也可以是其他东西,如与脚本交互的另一个应用程序。在后一种情况中,脚本就是视图,它负责显示模型。对于iOS应用程序,视图就是用于人机交互的用户界面。如图3-1所示,MVC设计模式的关键是在视图与模型之间互相保持抽象。这种抽象通过“控制器”作为中介。控制器为模型和视图提供了一个中间层以使它们能够相互独立。
在第2章的示例中,并没有明确地创建控制器,只是简单地把AppDelegate作为控制器,这对于简单的演示没有问题,但通常将视图的控制器作为独立的类,专门作为视图的控制器。另外,不要让视图控制器做太多的工作(如支持多种不同类型的顶层视图),这样的超级控制器会导致在应用程序中出现紧耦合,使应用程序难于维护。
在UIKit中,屏幕上的一切都是视图。控制器有单个顶层视图,在视图里面可以添加按钮、标签、滑块等的子视图。视图负责显示和事件捕获,如前面的UIButton的TouchUpInside事件。但是,视图不会做任何事件处理,事件处理是由控制器负责的。
视图也没有其显示数据。例如,可以直接在代码中使用UITextField的文本。但是,这不是正确的MVC做法。视图只负责显示数据。如果将视图与数据耦合,那会让代码难于维护。例如,如果增加需求,要在另一个视图的标题(title)属性中显示相同的文本又会怎么样呢?如果视图拥有数据,就必须耦合该标题的视图与标签。接着又有了另一个需求,要删除第一个视图。这样做,标题的显示就会出现问题。即使这么一点不起眼的地方,也会因为一时顺手而出现问题。好的设计就是将字符串分离出来,或者作为独立的字符串,或者作为一个大类的属性,或者作为模型,让控制器作为模型和视图之间传输数据的中介。
将视图通过控制器从模型中分离出来,使代码更易于调试和重用。使用MonoTouch,可重用这点不容小觑。如果目标是多平台,就要保证模型和支持类与使用平台无关。第9章会更深入地探讨设计模式中代码重用问题。
由于视图和控制器是唯一的平台问题(在目前iOS这种情况下),所以要了解它们是如何工作的,以及如何使用工具在IB中或直接在代码中创建视图和控制器。

相关文章
|
3月前
|
前端开发 Java 开发者
Spring MVC:构建高效、可维护、可扩展的Web应用程序
Spring MVC:构建高效、可维护、可扩展的Web应用程序
27 0
|
4月前
|
前端开发 数据库 Python
Python Web 开发: 解释 Django 框架的 MVC 架构是什么?
Python Web 开发: 解释 Django 框架的 MVC 架构是什么?
|
1月前
|
存储 设计模式 前端开发
请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
【2月更文挑战第26天】【2月更文挑战第89篇】请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
|
5月前
|
设计模式 存储 前端开发
介绍Spring MVC框架,以及如何使用它构建Web应用程序。
Spring MVC 是一个用于构建 Java Web 应用程序的强大框架。它基于经典的 MVC(Model-View-Controller)设计模式,提供了一种结构化的方法来开发可维护和可扩展的 Web 应用程序。在这篇文章中,我们将深入介绍 Spring MVC 框架,包括其核心概念、工作原理以及如何使用它构建 Web 应用程序。
|
2月前
|
设计模式 存储 前端开发
Java Web开发中MVC设计模式的实现与解析
Java Web开发中MVC设计模式的实现与解析
|
3月前
|
存储 开发框架 前端开发
MVVM 模式与 MVC 模式:构建高效应用的选择
MVVM 模式与 MVC 模式:构建高效应用的选择
MVVM 模式与 MVC 模式:构建高效应用的选择
|
3月前
|
JSON 前端开发 Java
开发必备技能:探索Spring MVC请求映射和参数绑定的奇妙之旅!
开发必备技能:探索Spring MVC请求映射和参数绑定的奇妙之旅!
|
3月前
|
JSON 前端开发 Java
Spring MVC响应结合RESTful风格开发,打造具有强大功能和良好体验的Web应用!
Spring MVC响应结合RESTful风格开发,打造具有强大功能和良好体验的Web应用!
|
3月前
|
前端开发 JavaScript Java
MVC|JAVA|SSM框架计算机硬件评测交流平台的开发和实现
MVC|JAVA|SSM框架计算机硬件评测交流平台的开发和实现
|
3月前
|
设计模式 前端开发 数据库
IOS开发基础知识:什么是 MVC 架构?它在 iOS 中的应用是什么样的?
IOS开发基础知识:什么是 MVC 架构?它在 iOS 中的应用是什么样的?
25 1