6.事件委托实现观察者模式
前面我们介绍按钮事件响应是从发送者和接收者的角度出发的,现在我们以设计模式中的观察者模式为例。

图8GoF观察者架构
/// 使用事件对委托进行封装
/// </summary>
public class Say
{
/// <summary>
/// 封装委托字段
/// </summary>
public static event SpeakDelegate speakDelegate;
/// <summary>
/// 调用委托具体实现方法
/// </summary>
/// <param name="name"></param>
public static void SayManager(string name)
{
speakDelegate(name);
}
}
/// <summary>
/// 客户端调用委托
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
Say.speakDelegate += Program.ChineseSpeaker;
Say.speakDelegate += Program.EnglishSpeaker;
Say.SayManager("Jackson");
Console.ReadKey();
/// </summary>
public class Say
{
/// <summary>
/// 封装委托字段
/// </summary>
public static event SpeakDelegate speakDelegate;
/// <summary>
/// 调用委托具体实现方法
/// </summary>
/// <param name="name"></param>
public static void SayManager(string name)
{
speakDelegate(name);
}
}
/// <summary>
/// 客户端调用委托
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
Say.speakDelegate += Program.ChineseSpeaker;
Say.speakDelegate += Program.EnglishSpeaker;
Say.SayManager("Jackson");
Console.ReadKey();