是否有更好的设计模式/方法可供使用?

Mat*_*hew 4 c++ xml design-patterns

我目前已经完成了一个项目的两个阶段之一,需要我使用C++将数据库信息写入XML.虽然使用第三方工具来实际格式化XML标签和数据,但我仍然需要设计一个模型以及业务逻辑来获取数据库表并将它们映射到XML结构中.

为此,我最终为每个XML结构创建了一个单独的类,从而产生了大量的类(~75).每个类都知道如何读取其关联表并通过第三方工具将自身序列化为XML.最后,系统运行良好(按时和预算),输出错误非常容易找到.

第二阶段几乎相同,但不是格式化文本,它将是二进制数据.因此,虽然我仍在考虑使用第一阶段使用的相同策略,但我想询问一下,这是一个更好的方法或设计模式,可以解决这个问题吗?特别是,由于第一阶段中某些XML类的大量依赖性,单元测试非常困难.

Dav*_*d M 7

您正在描述访客模式的经典应用程序.您需要两个目的来遍历对象模型,一次输出XML,另一次输出二进制数据.在四人帮的书中很好地解释了这一点.

模型的每个元素都必须接受一个识别类型的访问者(通常IVisitor),然后调用一个通常AcceptVisitor在此访问者上调用的方法.这是将对象转换为XML,二进制数据,可打印格式等的方法.然后它也可以将访问者引导到子对象等等.然后你编写一个XmlVisitor实现IVisitor,并用它"访问"你的结构 - 结果是XML.同样,您可以"访问"a BinaryVisitor并获取二进制输出.