Доброе утро,
Я унаследовал некоторый устаревший код на работе, и он использует довольно необычный шаблон проектирования.Единственная ссылка, которую я мог найти на форумах на подобную модель, была здесь .Ситуация такова, что оригинальный конструктор имеет общий родительский класс (не абстрактный), который имеет статический метод фабрики, который напрямую ссылается на дочерние классы.
Вот пример этого стиля кодирования, найденный в нескольких местах вустаревший код:
public static LoggerFactory getLoggerFactory(LogType type) {
switch (type) {
case LOG4J:
return Log4JLoggerFactory.getInstance();
case LOGBACK:
return LogBackLoggerFactory.getInstance();
default:
throw new RuntimeException("No logger factory defined for type " + type);
}
}
Где Log4JLoggerFactory и LogBackLoggerFactory расширяют LoggerFactory.
Это кажется мне действительно чуждым, но прежде чем я существенно переформулирую код, есть ли какая-то цель или польза для этого дизайнашаблон (есть даже формальное название для него)?
Любые мысли или советы приветствуются.Спасибо!
РЕДАКТИРОВАТЬ: Прочитав ответ Ишая, я решил добавить ссылку на статью Википедия о шаблоне Стратегии для удобства.Спасибо всем за ваши ответы!