我正在寻找适用于多种DataObject
和多种输出格式(ReportGenerator
s)情况的最佳设计。
当前的设置是这样的:Formattable
接口有ReportGenerator
使用的各种方法。每个DataObject
(DataObject
可以是几个不同的无关类中的任何一个)实现Formattable
- 即,它知道如何组织报告的特定数据,以及ReportGenerator
只是提供Formattable
个对象,它从中访问String数组并对其进行优化。
1)所以这是我的第一个问题:这是可取的吗?因为结果是组织报告数据的过程遍布所有DataObject
。替代方案是一个中间类,对instanceof
要格式化的DataObject
进行大量ReportGenerator
检查,但至少在一个地方都有。{/ p>
2)然后我的新问题是我需要引入辅助DataObject
,这需要Formattable
数据组织的方式略有不同。在当前设置中,我可以在ReportGenerator
方法上引入一个参数,以指定DataObject
{{1}}应格式化的类型,但同样不确定这是否可取。
答案 0 :(得分:2)
让我们用高级指针来解决你的高级问题:
DataObject可以是几个不同的不相关类中的任何一个) 实现Formattable - 即,它知道如何组织它的特定 报告的数据
你说DataObject将组织数据然后你说:
ReportGenerator只是从中提供了Formattable对象 访问字符串数组并将它们解开
格式化和组织之间真的有区别吗?在某种程度上,组织数据似乎是格式化数据的一个初步步骤,理想情况下应将其视为单一责任,而不是将其视为多重责任。将其转换为代码意味着单个类应该组织/格式化(这些术语似乎可以互换)数据。 ReportGenerator将是这方面的主要候选人。
然后我的新问题是我需要介绍一个辅助 ReportGenerator将需要稍微组织DataObject数据 不同
如果ReportGenerator负责组织/格式化数据,那么这个问题也应该解决。
总之,将数据组织从DataObjects移动到ReportGenerator是个好主意。