5

在保存和加载不同的文件格式时,是否有一种很好用的模式?

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

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

4

3 回答 3

2

您可以使用访问者模式,它允许根据访问者当前正在处理的节点对您的层次结构进行不同的操作。

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

如果必须隐藏类层次结构数据,还可以查看备忘录模式。这篇文章也可能会有所帮助。

编辑:使用谷歌缓存链接到原始备忘录模式文章

于 2008-09-17T09:17:08.583 回答
1

您可能想看看 Builder 模式。第 97 页 ..

于 2008-09-17T09:06:29.997 回答
0

(基于)模板方法模式怎么样?

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

于 2008-09-17T09:09:39.223 回答