есть два сервиса с бизнес логикой. Обы имплементируют один и тот же интерфейс. Клиент передает параметр и данные. В зависимости от этого параметра должны использовать разные классы с бизнес логикой. Кто нибудь делает подобное таким образом?
public interface CommonClass{
invoke(Data data);
}
@Service
public class FirstClass implements CommonClass{
//implemenation
}
@Service
public class SecondClass implements CommonClass{
//implemenation
}
@Component
@RequiredArgsConstructor
public class Factory {
private FirstClass firstClass;
private SecondClass secondClass;
public CommonClass get(Condition condition) {
switch (condition) {
case FIRST:
return firstClass;
case SECOND:
return secondClass;
}
}
}
И тогда в клиентском коде:
factory.get(condition).invoke(data)
Как бы это под паттерн абстрактной фабрики не особо ложится, но если варинтов условий много, то выносить это клиентский код не особо красиво. Вот вопрос, так кто-нибудь делает?
а через квалифаеры и кондишены это не решается?
это кстати не фабрика получается
Обсуждают сегодня