什么是序列化远程命令的好方法?

时间:2013-07-15 03:20:03

标签: c++ serialization conceptual

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

解决这类问题是否有好的做法?如果效率也很好。

提前致谢。

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

2 个答案:

答案 0 :(得分:1)

有一种叫做“演员”的设计模式,可能就是你想要的。特性:

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

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

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

答案 1 :(得分:1)

尝试工厂模式。某事along these lines是一个有用的工厂模型。

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

您可以在一个包中打包一个命令,其中包含一个标题,告诉接收者要创建的类型。当您读取命令时,您要求工厂创建正确的类型。然后可以调用返回的类型来反序列化其数据。

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

将命令弹出队列进行处理后,可以调用其“执行”方法。