在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
类负责处理事件。通过将事件的发送者和接收者分离,我们可以轻松地更改事件的接收者,而不需要修改发送者的代码。这就实现了解耦。