design-patterns - 保存和写入不同文件格式的模式

标签 design-patterns file-io

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

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

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

最佳答案

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

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

也看看 memento pattern如果隐藏类层次结构数据是必须的。 This article也可能有帮助。

编辑:原始链接 Memento pattern article使用谷歌缓存

关于design-patterns - 保存和写入不同文件格式的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/81288/

相关文章:

c++ - 确定文件是否可以在 C++ 中创建/不是只读

Python 不读取整个文本文件

c# - 多线程列表模式建议

php - 我应该从我的 Controller 传递 session 数据,还是在服务层读取它?

java - 多个生产者一个消费者的并发

file-io - Scheme 中的文件统计

c# - 如何在不使用反射的情况下访问一系列类的公共(public)属性

c++ - 对象的地址空间独立表示

java - 加载 .jpeg 并设置为 JLabel?

java - java中的文本文件到数组