我正在寻找适用于具有多个DataObject
和多个输出格式(ReportGenerator
)的情况的最佳设计。
当前的设置是这样的:有一个Formattable
接口,它具有ReportGenerator
使用的各种方法。每个DataObject
(DataObject
可以是几个不同的不相关类中的任何一个)都实现Formattable
,即,它知道如何为报告组织其特定数据,并且ReportGenerator
只是被馈送给Formattable
对象,它可以从中访问String数组并对其进行修饰。
1)这是我的第一个问题:这是可取的吗?因为结果是在整个DataObject
中分散了为报告组织数据的过程。另一种方法是中间类,其中包含一整堆instanceof
检查要格式化哪种DataObject
,但至少然后将它们全部放在一个位置。
2)然后我的新问题是,我需要引入一个辅助的ReportGenerator
,它将需要稍微不同地组织的DataObject
数据。在当前设置中,我可以在Formattable
方法上引入一个参数,以指定ReportGenerator
应该自行格式化的DataObject
类型,但是同样,不确定是否建议这样做。
最佳答案
让我们用高级指针解决您的高级问题:
DataObject可以是几个不同的不相关类中的任何一个)
实现Formattable-即,它知道如何组织其特定的
报告数据
您说DataObject将组织数据,然后说:
只是向ReportGenerator提供Formattable对象,从中可以获取它
访问字符串数组并使它们漂亮
格式化和组织之间真的有区别吗?从某种意义上说,组织数据似乎是格式化数据的初步步骤,理想情况下应将其视为单一职责,而不是将其视为多重职责。将其转换为代码意味着单个类应该组织/格式化(这些术语似乎可以互换)数据。 ReportGenerator将是最佳的选择。
然后我的新问题是我需要引入一个辅助
ReportGenerator需要将DataObject数据稍微组织一下
不同地
如果ReportGenerator负责组织/格式化数据,则也应解决此问题。
总之,将数据的组织从DataObjects移到ReportGenerator是一个好主意。