发布器(publisher) 是一个包含事件和委托定义的对象。事件和委托之间的联系也定义在这个对象中。发布器(publisher)类的对象调用这个事件,并通知其他的对象。
订阅器(subscriber) 是一个接受事件并提供事件处理程序的对象。在发布器(publisher)类中的委托调用订阅器(subscriber)类中的方法(事件处理程序)。
/// <summary>
/// 抽象类
/// </summary>
public abstract class EatFood
{
private Mom mom;
public EatFood(Mom _mom)
{
mom = _mom;
mom.Eat += Mom_Eat;
}
public abstract void Mom_Eat();
}
/// <summary>
/// 发布者
/// </summary>
public class Mom
{
//定义Eat事件,用于发布吃饭消息
public event Action Eat;
public void Cook()
{
Console.WriteLine("妈妈 : 饭好了");
//饭好了,发布吃饭消息
Eat?.Invoke();
}
}
/// <summary>
/// 订阅者
/// </summary>
public class Dad : EatFood
{
public Dad(Mom mom) : base(mom)
{
//爸爸去吃饭
Console.WriteLine("爸爸订阅了妈妈煮好饭的消息");
}
public override void Mom_Eat()
{
//爸爸去吃饭
Console.WriteLine("爸爸 : 吃饭了。");
}
}
/// <summary>
/// 订阅者
/// </summary>
public class Child : EatFood
{
public Child(Mom mom) : base(mom)
{
//爸爸去吃饭
Console.WriteLine("孩子订阅了妈妈煮好饭的消息");
}
public override void Mom_Eat()
{
//熊孩子LOL呢,打完再吃
Console.WriteLine("孩子 : 打完这局再吃。");
}
}
Mom mom = new Mom();
Dad dad = new Dad(mom);
Child child = new Child(mom);
mom.Cook();
浙公网安备 33010602011771号