В настоящее время я работаю над программой рендеринга данных журнала. Существуют различные типы данных журнала, такие как INPUT TEXT , OUTPUT TEXT , INTERMEDIATE TEXT и т. Д., И журналы хранятся в базе данных, где каждая строка содержит соответствующий тип журнала .
Способы передачи данных журнала с различными типами журнала s отличаются друг от друга, и поэтому я планирую применить simple factory с интерфейсом TextLogger
, содержащим несколько реализаций такие как InputTextLogger
, OutputTextLogger
. Фабрика LoggerFactory
может выглядеть так:
public class LoggerFactory {
public TextLogger createLogger(String logTypeValue) {
//use switch case or if condition here to return concrete instance of TextLogger
}
}
Альтернативой является возвращение TextLogger
с enum
в качестве аргумента:
public class LoggerFactory {
public TextLogger createLogger(LogType logType) {
//use switch case to return concrete instance of TextLogger
}
}
Использование enum
выглядит более понятным. Однако значения типа журнала хранятся в базе данных, где мы обычно получаем значение String
напрямую, что означает, что в коде требуется больше усилий для преобразования прямого значения String
в enum
Вопрос: в этом случае подходит ли вообще использование enum
?