【发布时间】:2008-10-28 13:43:35
【问题描述】:
我刚刚读到这个thread,我突然想到,OP 所询问的那种模式似乎是有效的用法。我知道我以前用它来实现对象的动态创建。据我所知,C++ 中没有更好的解决方案,但我想知道是否有任何大师知道更好的方法。通常,当我需要基于编译时未知的东西(例如基于配置文件)创建对象的几个子类之一时,我会遇到这种情况。一旦创建了对象,我就会多态地使用它。
当您使用消息传递方案(通常通过 TCP/IP)时,还有另一种相关情况,其中每条消息都是一个对象。我喜欢将这种模式实现为让每条消息将自己序列化为某个序列化流接口,这在发送端运行良好并且相当干净,但在接收端,我总是发现自己检查消息的标头以确定类型,然后使用链接文章中的模式构造一个适当的消息对象,然后让它从流中反序列化自己。有时我实现它,以便构造和反序列化作为构造函数的一部分同时发生,这似乎更 RAII,但这对于找出类型的 if/else 语句的混乱来说是一个小小的安慰。
还有更好的解决方案吗?如果您要推荐一个第三方库,它应该是免费的(最好是开源的),如果您能解释一下该库是如何实现这一壮举的,我将不胜感激。
【问题讨论】:
-
能否请您明确说明您要问什么而不是提及另一个问题?谢谢。
标签: c++ serialization