Dav*_*ell 5 file-io design-patterns
保存和加载不同的文件格式时是否有一个好用的模式?
例如,我有一个复杂的文档类层次结构,但我想支持一些不同的文件格式.
我考虑过策略模式,但我不相信,因为需要访问对象的每个部分才能保存和加载它.
您可以使用访问者模式,它允许迭代您的层次结构,根据访问者当前正在处理的节点执行不同的操作。
坏消息:您可能需要在层次结构的顶部添加至少一个虚拟方法,并且可能在某些派生类中重新定义它,并且访问者仍然访问节点的数据,但是您解耦了文件格式,因为不同的访问者实现可以以不同的方式写入收集的数据。
如果必须隐藏类层次结构数据,请查看备忘录模式。这篇文章也可能有帮助。
编辑:使用谷歌缓存链接到原始的Memento 模式文章