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

C++ 序列化远程命令的好方法是什么?,c++,serialization,conceptual,C++,Serialization,Conceptual,我一直在做一个小游戏,只是为了学习。 这个游戏的目的是它将是在线的,但是我在如何序列化从服务器发送到客户端的命令方面遇到了一些麻烦。 有很多不同的命令可以发送,手动处理这些命令让我发疯。目前,我正在使用大量的“如果”来实现这一点,但我希望有一种设计模式能有所帮助。 我想将消息解包到不同类型的对象中,这样我就可以从某种队列中获取消息并有效地处理它们。。。但我想部分或完全自动完成 有解决这类问题的好方法吗?如果它也有效率那就好了 提前谢谢 PS:虽然这是一个概念性的问题,但我使用C++,所以一些具体

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

有解决这类问题的好方法吗?如果它也有效率那就好了

提前谢谢


PS:虽然这是一个概念性的问题,但我使用C++,所以一些具体的解决方案也会很好。p> 有一种称为“演员”的设计模式,这可能是您想要的。特点:

  • 自然和简化的并发模型

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


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

    < P>尝试工厂模式。有些东西是有用的工厂模型

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

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

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


    一旦将命令弹出队列进行处理,就可以调用其“Execute”方法。

    Actor模型非常容易实现。看看这一步可能有多简单。它是用java编写的,但是C++可以很容易地重写。它需要一个执行器,它只是一个线程池,并显示C++中有许多线程池实现。