Генераторы отчетов - мне нужен какой-то умный шаблон дизайна;) - PullRequest
1 голос
/ 01 апреля 2011

так что есть веб-приложение (Seam + JSF / Facelets), над которым я сейчас работаю, и мне нужно создать сервис генерации отчетов - в настоящее время три разных типа отчетов и три разных формата. Я хотел бы, чтобы вы предложили несколько хороших шаблонов, реализующих эту функцию, которые могли бы спасти меня в actionBean, например:

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

Так что, я думаю, был бы интерфейс ReportGenerator с методами для различных типов отчетов и реализации ReportGenerator для различных типов форматов. Но как объединить все поддерживаемые реализации формата в одном сервисе, чтобы его можно было легко вызывать из компонента действия без какой-либо логики переключения? Должен ли я собрать их в какой-то общий сервис и предоставить метод List getSupportedFormats ()? Дай мне свои идеи:)

1 Ответ

3 голосов
/ 01 апреля 2011

Я бы использовал абстрактный шаблон фабрики , то есть предоставил бы генератор отчетов (фабрика) для каждого поддерживаемого формата (например, формат карты-> фабрика). Затем выберите завод, который поддерживает выбранный формат.

...