0

我一直在做一个小游戏,只是为了学习。游戏的目的是要上线,但是我在如何序列化从服务器发送到客户端的命令方面遇到了一些麻烦。可以发送很多不同的命令,手动处理这些命令让我发疯。目前我正在使用很多“ifs”来做到这一点,但我希望有一个设计模式可以提供帮助。我想将消息解压缩到不同类型的对象中,这样我就可以从某种队列中获取它们并有效地处理它们......但我想部分或完全自动地完成。

有解决此类问题的好习惯吗?如果它也有效率那就太好了。

提前致谢。

PS:虽然这是一个概念问题,但我使用的是 C++,所以一些具体的解决方案也可以。

4

2 回答 2

1

有一种称为“演员”的设计模式,这可能是您想要的。特征:

  1. 自然和简化的并发模型。

  2. 可以与消息的模式匹配一​​起使用(消除“ifs”)。

语言“scala”为这种设计模式提供了很好的支持,完美地满足了您的需求。但是,我不知道 C++ 中是否有类似的解决方案。

于 2013-07-15T03:34:03.407 回答
1

尝试工厂模式。沿着这些思路的东西是一个有用的工厂模型。

创建一个基类,提供从流中序列化和反序列化数据的方法,并通过名称或其他标识符向工厂注册派生类型。

您可以将命令打包在一个带有标头的包中,该标头告诉接收器要创建什么类型。当您阅读命令时,您要求工厂创建正确的类型。然后可以调用返回的类型来反序列化其数据。

在这里,我假设一些命令有额外的数据。

一旦您将命令从队列中弹出以进行处理,您就可以调用它的“执行”方法。

于 2013-07-15T03:38:13.827 回答