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

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中或直接在代码中创建视图和控制器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《iPhone高级编程:使用Mono Touch和.NET/C#》从基本的概念入手,全面地介绍了基于monotouch使用C#/.net进行iphone应用程序开发。从monotouch和.net开发环境到objective-c和c#开发语言,从基于monotouch进行iphone开发的编程方法到应用程序的发布和销售等,《iPhone高级编程:使用Mono Touch和.NET/C#》涵盖了基于monotouch进行iphone应用程序开发涉及的方方面面。 《iPhone高级编程:使用Mono Touch和.NET/C#》的主要内容分为两大部分:第1部分包括第1-4章,这一部分介绍iphone和monodevelop ide开发的基本知识,主要包括iphone、.net framework和monotouch的相关背景和概念、monotouch使用方法、iphone用户界面和数据控件方面的内容:第ⅱ部分包括第5-15章,这一部分的内容相对独立,可以根据需要选择性地阅读:第5章介绍在iphone中检索和存储数据,包括本地数据和远程数据;第6章介绍表的使用,包括表内容显示、表导航和表编辑等;第7章介绍基于corelocation和mapkit实现地图功能:第8章系统介绍应用程序设置:第9章介绍面向设备硬件编程;第10章介绍多媒体编程;第11章介绍利用第三方应用程序的编程;第12章介绍应用程序本地化和国际化编程;第13章介绍如何面向ipad编程:第14章介绍objective-c代码的阅读方法;第15章介绍将应用程序提交到应用程序商店涉及的所有过程和工作,还包括应用程序的推销途径与方法。 《iPhone高级编程:使用Mono Touch和.NET/C#》专门针对具有C#/.net开发经验并希望转到面向iphone进行编程的人员。他们可以通过monotouch,利用已有的C#/.net知识编写能够直接在iphone中运行的应用程序。因此,阅读《iPhone高级编程:使用Mono Touch和.NET/C#》的读者需要具有一定的C#/.net开发经验,并希望面向iphone编程。 作者简介 麦克卢尔(Wallace B.McClure),是微软MVP、ASP Insider、INETA Speaker's Bureau会员,他的博客和播客深爱大家欢迎。 Martin Bowling是资深软件开发人员,他还是处理中小规模业务的市场营销人员。 Craig Dunn自1993年开始就一直在企业环境中从事Web技术方面的工作。 Chris Hardy是ASP Insider,在英国曼彻斯特从事digitalagency 工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值