我正在寻找适用于具有多个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是一个好主意。

10-08 12:53