如果您正在编写一个具有大量网络流量的大型程序,我在哪里可以最好地处理我的不同数据包?我的数据包包含一个连接到大枚举的数据包 ID。例如数据包 LOGIN_AUTH 是数据包 ID 23。
我怎样才能最好地分开处理这些数据包?
- 用所有的数据包 ID 做一个巨大的 switch 语句?
- 创建一个 Packet 类并为每个 Packet ID 创建一个扩展类?
我正在用 C# 制作我的应用程序,但问题更笼统。
如果您正在编写一个具有大量网络流量的大型程序,我在哪里可以最好地处理我的不同数据包?我的数据包包含一个连接到大枚举的数据包 ID。例如数据包 LOGIN_AUTH 是数据包 ID 23。
我怎样才能最好地分开处理这些数据包?
我正在用 C# 制作我的应用程序,但问题更笼统。
假设您的对象有一个定义包类型的 int,使用枚举来命名这些整数并将处理程序存储在字典中很简单,如下所示:
public enum PackageType
{
LOGIN_AUTH = 23,
// More enum members here
}
class Package
{
public int Id { get; set; }
public PackageType Type { get { return (PackageType) Id; }}
}
class SomeClass
{
IDictionary<PackageType, Action<Type>> _dictionaryPacketHandlers = new Dictionary<PackageType, Action<Type>>()
{
{PackageType.LOGIN_AUTH, package => { /* Logic here */ }},
// More handlers here
};
}
现在你可以像这样使用它:
public void SomeMethod(Package package)
{
_dictionaryPacketHandlers[package.Type](package);
}