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

Merging Multiple Objects to Multiple Formats

我正在寻找适用于具有多个 DataObject 和多个输出格式 (ReportGenerators) 的情况的最佳设计。

当前的设置是这样的:有一个 Formattable 接口,其中有 ReportGenerator 使用的各种方法。每个 DataObjectDataObject 可以是几个不同的不相关 classes 中的任何一个)实现 Formattable —— 即,它知道如何为报告组织其特定数据,并且ReportGenerator 被简单地馈入 Formattable 个对象,它从中访问字符串数组并美化它们。

1) 所以这是我的第一个问题:这是否可取?因为结果是为报告组织数据的过程散布在所有 DataObject 中。另一种选择是一个中介 class,它有一大堆 instanceof 检查要格式化的 DataObject 类型,但至少这样它就在一个地方。

2) 然后我的新问题是我需要引入一个辅助 ReportGenerator,它需要 DataObject 数据组织方式略有不同。在当前的设置中,我可以在 Formattable 方法上引入一个参数来指定 ReportGenerator 应该为哪种 DataObject 设置格式,但再次不确定这是否可取。

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

DataObject could be any of several different unrelated classes) implements Formattable -- ie, it knows how to organize its particular data for the report

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

ReportGenerator is simply fed Formattable objects from which it accesses String arrays and pretties them up

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

And then my new problem is that I need to introduce a secondary ReportGenerator which will need DataObject data organized slightly differently

如果 ReportGenerator 承担起 organizing/formatting 数据的责任,这个问题也应该得到解决。

总而言之,将数据组织从 DataObject 转移到 ReportGenerator 是个好主意。