报告生成器 - 我需要一些智能设计模式;)

时间:2011-04-01 07:21:47

标签: java jsf seam design-patterns

所以我正在研究一个webapp(Seam + JSF / Facelets),我需要创建报告生成服务 - 目前有三种不同的报告类型和三种不同的格式。我希望你建议一些好的模式来实现这个功能,这可以在actionBean中保存我的东西,如:

if (selectedFormat == pdf) {
    pdfReportService.generateReportNr1();
} else if (selectedFormat == csv) {
    csvReportService.generateReportNr1();
} else if [...]

所以我猜有ReportGenerator接口可以提供不同类型报告的方法,ReportGenerator实现不同的格式类型。但是如何在一个服务中组合所有支持的格式实现,以便可以从操作bean轻松调用它而无需任何切换逻辑?我应该在一些常见服务中收集它们并公开List getSupportedFormats()方法吗?给我你的想法:)

1 个答案:

答案 0 :(得分:3)

我使用abstract factory pattern,即为每种支持的格式(如地图格式 - >工厂)提供报告生成器(工厂)。然后选择支持所选格式的工厂。