首页 > 解决方案 > 哪种设计模式可以序列化对象 Builder 和 Visitor ?

问题描述

我正在尝试通过示例学习 OOPS。所以我尝试实现一个对象序列化器。对象是相同的,但它可以序列化为 XML、JSON 等。我看到了两种类型的建议。

在这个博客中,他们说我们可以使用访问者/双重调度来序列化对象。

http://codebetter.com/jeremymiller/2007/10/31/be-not-afraid-of-the-visitor-the-big-bad-composite-or-their-little-friend-double-dispatch/

但是,根据定义,我们是从复杂对象构建序列化对象,因此创建 XMLBuilder 和 JSONBuilder 是有意义的。

现在,这是正确的方法吗?

标签: design-patternsbuildervisitor-patternbuilder-pattern

解决方案


学习设计模式的重点是为您的工具包提供解决方案的想法,而不是在解决测试问题时遵循教条。

在现实世界的场景中,很少有完美的选择。您必须权衡取舍并决定哪种方法最适合当前情况。

为什么不尝试这两种方法并评估您喜欢这些方法的哪些方面呢?

访问者模式的Wikipedia 条目很好地概述了您可能想要选择访问者模式的原因。“用例示例”特别适用于您的问题。

这种类型层次结构的基本操作是将图形保存为系统的本机文件格式。

类似地,可以应用Builder 模式 。但请注意,这种模式的重点是从多个来源创建复杂的输出。Builder 形式化了正在进行的工作的概念,允许您收集状态,直到可以生成输出对象。

我认为访问者模式更简单地满足您的需求。但是,选择权在你手中——这就是软件开发的美妙(和诅咒)!


推荐阅读