频道栏目
读书频道 > 软件开发 > c语言 > Objective-C程序设计入门与实践
3.2.2 委托
2015-11-20 14:51:20     我来说两句
收藏   我要投稿
《Objective-C程序设计入门与实践》详细介绍了Objective-C语言和苹果iOS、Mac平台面向对象程序编程的知识;结合独特的学习方法,在每章都合理嵌入大量的范例,让本书更适合于读者学习和课堂教学。如果你对iPhone  立即去当当网订购

委托模式是一个对象周期性地向被指定为其委托的另一个对象发送消息,向其请求输入或者通知某件事情正在发生。该模式可替换类继承来对可复用对象的功能进行扩展。

在本文将要创建的应用程序中,应用程序对象会向其委托发送消息,通知它主要的启动例程已经完成并且定制的配置可开始执行。为了建立并管理视图,委托会创建一个控制器实例。

另外,当世界杯体育投注平台点击Return按键后,文本字段也会通知它的委托(即所创建的控制器对象)。

委托方法通常会集中在一起形成一份协议。 一份协议基本上就是一个方法的列表。如果一个类遵循某个协议,则它要保证实现协议所要求的方法(有些方法可选择实现与否)。委托协议规定了一个对象可以发送给委托的所有消息。

委托是一种对象,当向外委托任务的对象遇到程序中的事件时,它的委托可以代表它对事件进行处理,或者和它进行协调。向外委托任务的对象通常是一个响应者对象—即继承自NSResponder的对象—负责响应世界杯体育投注平台事件。委托则是受托进行事件的世界杯体育投注平台界面控制,或者至少根据应用程序的具体需要对事件进行解释的对象。

为了更好地理解委托的价值,让我们考虑一个复活的Cocoa对象,比如一个窗口(NSWindow的实例)或者表视图(NSTableView的实例)。这些对象的设计目的是以一般的方式实现一个具体的角色;举例来说,窗口对象负责响应窗口控件的鼠标操作,处理象关闭窗口、调整尺寸、以及移动窗口的位置这样的事件;这个受限而又具有一般性的行为必然限制该对象认识一个事件对应用程序其它地方的影响,特别是当被影响的行为只存在于 的应用程序的时候。委托为 的定制对象提供一种方法,使它可以就应用程序特有的行为和复活对象进行通讯。

委托的编程机制使对象有机会对自己的外观和状态、以及程序在其它地方发生的变化进行协调,这些变化通常是由世界杯体育投注平台动作触发的。更重要的是,委托使一个对象有可能在没有进行继承的情况下改变另一个对象的行为。委托几乎总是 的一个定制对象,它通过定义将应用程序具体逻辑结合到程序中,而这些逻辑是具有一般性的,是向外委托任务的对象自身不可能知道的。

委托是如何工作的

委托机制的设计是很简单的(图5-2)。希望向外委托任务的类需要有一个插座变量,通常命名为delegate,并包含对该插座变量进行设置和访问的方法。它还需要声明一或多个方法,构成一个非正式的协议,但不进行实现。非正式协议通常是希望向外委托任务的类的一个范畴,和正式协议的不同之处在于,它不需要实现协议中的所有方法。在非正式协议中,委托只实现希望进行协调或对缺省行为实施影响的方法。


 

非正式协议的方法标记着进行任务委托的对象需要处理或预期发生的重大事件。该对象希望就这些事件和委托进行交流,或者就即将发生的事件向委托请求输入或批准。举例来说,当世界杯体育投注平台点击一个窗口的关闭按键时,窗口对象会向委托发送windowShouldClose:消息;这就使委托有机会否决或推迟窗口的关闭,如果必须保存窗口关联数据的话(参见图5-3)。


 

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.2.1 设计模式
下一篇:3.2.3 模型-视图控制器
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑--致力于做实用的IT技术学习网站

世界杯外围投注官网