这个例子很有意思,我用观察者模式实现一下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EventDelegateDemo1
{
class Program
{
static void Main(string[] args)
{
//创建一个 Bridegroom 对象,并实例
Bridegroom bridegronm = new Bridegroom();
//创建多个朋友
Friend f1 = new Friend(bridegronm, "李四");
Friend f2 = new Friend(bridegronm, "张三");
Friend f3 = new Friend(bridegronm, "王五");
Friend f4 = new Friend(bridegronm, "丁六");
//新郎官发结婚通知
bridegronm.OnMarryEvent("我要结婚了,大家都来参加哈~~");
Console.ReadKey();
}
}
//新郎官
class Bridegroom
{
//定义委托类型
public delegate void MarryHandler(string msg);
//定义事件
public event MarryHandler MarryEvent;
//事件触发方法
public void OnMarryEvent(string msg)
{
if (MarryEvent!=null)
{
MarryEvent(msg);
}
}
}
//朋友类
class Friend
{
//手机存有的新郎官
private Bridegroom bridegroomF;
private string Name = "";
public Friend(Bridegroom bridegroom, string name)
{
this.bridegroomF = bridegroom;
this.Name = name;
bridegroomF.MarryEvent += BridegroomF_MarryEvent;
}
//事件绑定方法
private void BridegroomF_MarryEvent(string msg)
{
Console.WriteLine($"朋友{Name},收到信息:-{msg}");
Console.WriteLine($"朋友{Name},回复消息:收到了,一定准时出席参加");
}
}
}
|