在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
類負責處理事件。通過將事件的發送者和接收者分離,我們可以輕松地更改事件的接收者,而不需要修改發送者的代碼。這就實現了解耦。