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

时间:2020-03-05 18:58:20  来源:igfitidea点击:

保存和加载不同文件格式时,是否有一种适合使用的模式?

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

我考虑过策略模式,但是由于需要访问对象的每个部分以保存和加载它,因此我并不确信。

解决方案

回答

我们可能想看看Builder模式。 GoF第97页。

回答

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

一个超类知道如何拆散类层次结构,但是依靠其子类实际对其进行有用的操作。

回答

我们可以使用"访问者模式",它允许根据访问者当前正在处理的节点,通过执行不同的操作来遍历层次结构。

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

如果必须隐藏类层次结构数据,还请看一下memento模式。本文也可能会有所帮助。

编辑:使用Google缓存链接到原始的Memento模式文章