用于保存和写入不同文件格式的模式

时间:2008-09-17 08:59:44

标签: design-patterns file-io

在保存和加载不同的文件格式时,是否存在可以使用的模式?

例如,我有一个复杂的文档类层次结构,但我想支持几种不同的文件格式。

我考虑过策略模式,但我不相信,因为需要访问对象的每个部分才能保存和加载它。

3 个答案:

答案 0 :(得分:2)

您可以使用Visitor Pattern,它允许根据访问者当前正在处理的节点进行不同操作的迭代。

坏消息:您可能需要在层次结构的顶部添加至少一个虚拟方法,并且可能在某些派生类中重新定义它,并且访问者仍然可以访问节点的数据,但是您要解耦文件格式,因为不同的访问者实现可以写出以不同方式收集的数据。

如果隐藏类层次数据是必须的,请查看memento patternThis article也可以提供帮助。

修改:使用Google缓存

链接到原始Memento pattern article

答案 1 :(得分:1)

您可能需要查看Builder模式。 GoF第97页..

答案 2 :(得分:0)

Template method pattern

如何(基于某些内容)?

一个超类知道如何拆分类层次结构,但依赖于它的子类来实际做一些有用的东西。