最近,在看支持多种数据库访问的一段代码时,想到要学学 以前总是心理上排斥的Delegate和Event.
google一下:委托是一种可以把引用存储为函数的类型。他的声明类似于函数,但不带函数体,且要使用delegate关键字。
为了更好的理解这两个概念,我假定有如下的情节: 有老板(Boss)和三种类型的员工(A,B,C)组成的公司D,现在亟需到E公司取一份资料。(取资料这个事件发生了)取资料这份差事由谁完成呢(开始订阅事件了)?具体情况是这样的:A:即会开车又会走路;B:只会开车(老员工腿脚有些不方便)C:只会走路(驾照暂时还没拿到 :-))那么最佳人选应该是A型员工了,因为他如果遇到天气不好就Drive(),遇到交通堵塞就Walk()。 用伪代码简单阐述如下:
1. 声明一个delegate对象,它应当与你想要传递的方法具有相同的参数和返回值类型。(当然了,A也必须和他们一样要明白老板意图,带着亲笔信,取回资料。在这里A型员工就起到了委托的作用)
2. 创建delegate对象,并将你想要传递的函数名作为参数传入(注意是不带括号的函数名)。
3. 在要实现异步调用的地方,通过上一步创建的对象来调用方法。
ps:其中第三点有点和工厂模式的思想一样.
待续ing
浙公网安备 33010602011771号