将多个对象合并为多个格式

时间:2015-02-27 17:21:56

标签: java inheritance design-patterns

我正在寻找适用于多种DataObject和多种输出格式(ReportGenerator s)情况的最佳设计。

当前的设置是这样的:Formattable接口有ReportGenerator使用的各种方法。每个DataObjectDataObject可以是几个不同的无关类中的任何一个)实现Formattable - 即,它知道如何组织报告的特定数据,以及ReportGenerator只是提供Formattable个对象,它从中访问String数组并对其进行优化。

1)所以这是我的第一个问题:这是可取的吗?因为结果是组织报告数据的过程遍布所有DataObject。替代方案是一个中间类,对instanceof要格式化的DataObject进行大量ReportGenerator检查,但至少在一个地方都有。{/ p>

2)然后我的新问题是我需要引入辅助DataObject,这需要Formattable数据组织的方式略有不同。在当前设置中,我可以在ReportGenerator方法上引入一个参数,以指定DataObject {{1}}应格式化的类型,但同样不确定这是否可取。

1 个答案:

答案 0 :(得分:2)

让我们用高级指针来解决你的高级问题:

  

DataObject可以是几个不同的不相关类中的任何一个)   实现Formattable - 即,它知道如何组织它的特定   报告的数据

你说DataObject将组织数据然后你说:

  

ReportGenerator只是从中提供了Formattable对象   访问字符串数组并将它们解开

格式化和组织之间真的有区别吗?在某种程度上,组织数据似乎是格式化数据的一个初步步骤,理想情况下应将其视为单一责任,而不是将其视为多重责任。将其转换为代码意味着单个类应该组织/格式化(这些术语似乎可以互换)数据。 ReportGenerator将是这方面的主要候选人。

  

然后我的新问题是我需要介绍一个辅助   ReportGenerator将需要稍微组织DataObject数据   不同

如果ReportGenerator负责组织/格式化数据,那么这个问题也应该解决。

总之,将数据组织从DataObjects移动到ReportGenerator是个好主意。