在保存和加载不同的文件格式时,是否存在可以使用的模式?
例如,我有一个复杂的文档类层次结构,但我想支持几种不同的文件格式。
我考虑过策略模式,但我不相信,因为需要访问对象的每个部分才能保存和加载它。
答案 0 :(得分:2)
您可以使用Visitor Pattern,它允许根据访问者当前正在处理的节点进行不同操作的迭代。
坏消息:您可能需要在层次结构的顶部添加至少一个虚拟方法,并且可能在某些派生类中重新定义它,并且访问者仍然可以访问节点的数据,但是您要解耦文件格式,因为不同的访问者实现可以写出以不同方式收集的数据。
如果隐藏类层次数据是必须的,请查看memento pattern。 This article也可以提供帮助。
修改:使用Google缓存
链接到原始Memento pattern article答案 1 :(得分:1)
您可能需要查看Builder模式。 GoF第97页..
答案 2 :(得分:0)
一个超类知道如何拆分类层次结构,但依赖于它的子类来实际做一些有用的东西。