我正在研究一个应用程序,它接收一个原始的二进制消息(非常简单,第一个字节是消息类型,其余是有效载荷),然后用它做些事情。我试图完成的事情是确保将网络服务从应用程序的其余部分抽象出来,以允许现在修改协议,而不会影响应用程序的其他部分。 该应用程序的上下文是一个非常简单的客户端 - 服务器游戏,为此我正在做客户端的工作。封装网络协议
虽然我现在有点挣扎。我需要找到一种优雅的方式来将连接引入某种翻译器/适配器服务,它会返回漂亮的对象(我认为)。这些对象将被抛出队列,等待应用程序的其余部分使用。我现在面临的问题是或多或少这个结构(伪代码):
假设每个消息是20个字节,这样我就可以处理调用这个函数为每个20个字节:
public Message GetMessage(byte[] buffer)
{
switch(buffer[0])
{
case 1:
return Message1(...);
case 2:
return Message2(...);
.....
case n:
return MessageN(...);
}
}
很显然,我会用一个枚举或常量来处理这个案例,但这不是那个让我烦恼的事情。 这是事情。我认为我有大约50种消息类型,这意味着我将得到一个包含50个案例的switch语句。我无法真正想到一种合适的方式将它分解成更小的部分,这将导致巨大的,容易出错的方法。我想知道是否有任何模式可以使这更容易,因为我找不到任何模式。
感谢您的提前输入!
这仅仅是写一个更简洁的方式开关,对吗?不错的选择,但! – 2009-06-21 22:52:58
嘿,在这种情况下,它实际上更强大。而且我被告知可以使用歧视性工会让它变得更好。无论如何,让我看看我是否能找到一个例子 – TimothyP 2009-06-22 01:29:16