大话OO之解析委托[2]

发表于:2009-11-18来源:作者:点击数: 标签:大话委托解析
大话OO之解析委托[2] 软件测试 关键字:oo 有了回调函数后,操作系统只需要将用户所触发的消息发往回调函数,而不需要管该发什么,该发给谁,而全部由应用的回调函数来决定由谁处理,这样操作系统与应用程序的耦合程度便大大降低了,操作系统不需要知道应用

大话OO之解析委托[2]  软件测试

关键字:oo 有了回调函数后,操作系统只需要将用户所触发的消息发往回调函数,而不需要管该发什么,该发给谁,而全部由应用的回调函数来决定由谁处理,这样操作系统与应用程序的耦合程度便大大降低了,操作系统不需要知道应用程序的结构,而应用程序必须提供一个与操作系统约定好了格式的回调函数。

    根据委托人不做事情,而由被委托人来做,可以判断出回调函数的身份是“委托人”,而回调函数中调用的方法则是真正做事情的“被委托人”。那么在.NET中干脆去掉了WIN32种让人费解的回调函数,而采用了委托来处理操作系统发送过来的消息。

    在.NET的Windows程序中,向窗体中的控件添加一个事件就会产生一条代码,如:this.button1.Click += new System.EventHandler(this.button1_Click);

    委托在.NET的事件处理程序中被隐含的定义,我们看不到定义的代码,但是操作系统将消息发送给程序的时候不需要知道程序处理方法的名称,他只需要大喊一声“某某键被按下拉!”,就会由相应的委托接受到消息,并触发委托对应的方法的执行。跟回调函数不同,委托并不是将所有的消息都接受,并可以调用不同的方法。委托只能调用格式相同的方法,如果要委托既能调用一个参数的方法又能调用多个参数的方法则行不通。

 

    在.NET中,委托已经由应用程序框架定义好了,我们只需要编写处理方法,并使用委托的+=操作符将委托人与被委托人联系起来就可以,当然一个委托人可以找多个被委托人,一个被委托人也可以接受多个委托人的委托。

原文转自:http://www.ltesting.net