从功能上来说,委托和接口是比较相似的。其实委托最常见的应用是传统C或C++程序员会使用函数指针的情况。也就是说,委托与函数指针类似,它可以把函数的引用和实现分离开,允许实现作为独立的模块存在。与接口相比,委托有一个优势,使得它的使用比接口更加灵活,那就是委托可以很容易的链接到一起,也就是允许多个委托组合成一个委托链。我们可以用“+=”和“-+”轻松地做到。当然我们在需要地时候还可以手工迭代委托链。比如下面一段代码:
Delegate [] examples = Fxb.GetInvocationList();
foreach(Delegate f in examples)
{
f.DynamicInvoke(args);
}委托说了半天,继续回头说接口。接口中可以有属性,方法,甚至可以有事件(event),但就是不能包含委托,因为委托是一个类型。我们在接口中使用属性也是很重要的一点,因为这会方便客户使用反射检测并了解实现了这个接口的类的行为。
其实序幕里应该讲讲UML的,但本人比较懒,也就略过了,反正也不是很难的东西,在模式的学习中对UML有个了解也就够了。

