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

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

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

有帮助吗?

解决方案

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

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

还请看一下 纪念品图案 如果必须隐藏类层次结构数据。 本文 也可能有帮助。

编辑:链接至原文 纪念品图案文章 使用谷歌缓存

其他提示

您可能想看一下构建器模式。GOF第97页..

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top