C# TCP 用观察者设计模式
时间: 2024-09-29 19:13:20 浏览: 47
在C#中,TCP(Transmission Control Protocol)通常用于创建客户端服务器通信,而观察者设计模式(Observer Pattern)可以帮助管理这种异步数据流。当服务器有新的数据可用时,它会作为“发布者”(Publisher),将消息广播给所有订阅了它的“观察者”(Observer)。观察者模式在这里可以实现如下的功能:
1. **解耦**:服务器和客户端之间的职责分离,服务器只负责数据生成,客户端关注的是接收并处理数据。
2. **灵活性**:增加、移除或替换观察者无需修改服务器代码,只需在客户端注册或注销观察者即可。
3. **可扩展性**:如果需要添加新的功能或客户端,只需要添加新的观察者实例,不会影响现有的结构。
下面是一个简单的示例:
```csharp
public interface IObservable
{
void Subscribe(IObserver observer);
void Unsubscribe(IObserver observer);
void NotifyObservers();
}
public interface IObserver
{
void OnDataReceived(string data);
}
public class Server : IObservable
{
private List<IObserver> observers = new List<IObserver>();
public void AddObserver(IObserver observer)
{
observers.Add(observer);
}
public void RemoveObserver(IObscriber observer)
{
observers.Remove(observer);
}
protected virtual void NotifyCore(string data)
{
foreach (var observer in observers)
{
observer.OnDataReceived(data);
}
}
public void SendData(string data)
{
NotifyCore(data);
}
}
public class Client : IObserver
{
public void OnDataReceived(string data)
{
// 处理接收到的数据
Console.WriteLine($"Received data: {data}");
}
}
```
在这个例子中,`Server`实现了`IObservable`接口,并维护着一个观察者列表。当有新数据时,通过`NotifyObservers()`方法通知所有订阅的`IObserver`。`Client`则是`IObserver`的一个实现,当接收到数据时,它会响应相应的事件。
阅读全文