Сохранить имена отчетов в интерфейсе, перечислении или как константу внутри класса обработчика отчета? - PullRequest
1 голос
/ 10 июля 2011

Для каждого отчета у меня есть специальный класс обработчика для этого отчета. В настоящее время я сохраняю имя отчета как частную константу внутри класса обработчика.

Я использую имя отчета в качестве ключа для получения конкретной конфигурации этого отчета из файла конфигурации отчетов.

Я думал об изменении этого и сохранении всех имен отчетов в перечислении. Другой подход, который я имею в виду, - это использование полного имени класса обработчика в качестве ключа в файле конфигурации.

Мне нужно знать, какой подход лучше: Интерфейс, перечисление, константа класса обработчика или использование имени класса в качестве ключа в файле конфигурации вместо имени отчета

Пожалуйста, дайте совет

Ответы [ 2 ]

0 голосов
/ 12 июля 2011

Вы также можете использовать иерархию наследования;см. этот вопрос .То есть иметь класс SaleReport, который наследуется от вашего базового класса Report, и класс ProfitReport, который наследуется от Report и т. Д. Иметь разные подклассы для каждого отдельного типа отчета и общий базовый класс отчета..

0 голосов
/ 10 июля 2011

Я действительно люблю использовать enums и часто их использую.Вы должны хранить данные где-нибудь, почему бы не поместить их там, где все могут их найти!

Сделайте что-то вроде этого:

public enum Report {
    SALES("Sale Report", "select * from some_view"),
    PROFIT("Profit Report", "select * from some_other_view");

    final String reportName;
    final String sql;

    private Report(String reportName, String sql) {
        this.reportName = reportName;
        this.sql = sql;
    }

    public String getReportName() {
        return reportName;
    }

    public String getSql() {
        return sql;
    }
}
...