在C#中,委托和事件是实现解耦的一种常用方法。通过使用委托和事件,你可以将事件的发送者和接收者分离,从而使它们之间的耦合度降低。下面是一个简单的示例,展示了如何使用委托和事件实现解耦:
public delegate void MyEventHandler(object sender, EventArgs e);
public class EventPublisher
{
// 定义事件
public event MyEventHandler MyEvent;
// 触发事件的方法
public void RaiseMyEvent()
{
MyEvent?.Invoke(this, EventArgs.Empty);
}
}
public class EventSubscriber
{
public EventSubscriber(EventPublisher publisher)
{
// 订阅事件
publisher.MyEvent += OnMyEvent;
}
// 处理事件的方法
private void OnMyEvent(object sender, EventArgs e)
{
Console.WriteLine("Event received!");
}
}
class Program
{
static void Main(string[] args)
{
EventPublisher publisher = new EventPublisher();
EventSubscriber subscriber = new EventSubscriber(publisher);
// 触发事件
publisher.RaiseMyEvent();
}
}
在这个示例中,EventPublisher
类负责触发事件,而 EventSubscriber
类负责处理事件。通过将事件的发送者和接收者分离,我们可以轻松地更改事件的接收者,而不需要修改发送者的代码。这就实现了解耦。