Лучший способ реализовать фабричный шаблон в Spring boot.
У меня есть интерфейс и несколько его реализаций. Во время запроса мне нужно вернуть компонент на основе входной строки.
Есть несколько способов, которыми я могу это сделать. Но какой самый лучший способ?
interface vehicle {
void drive();
string getVehicleName();
}
@Component
public class Car implements vehicle {
private static string prop = "car";
@Override
string getVehicleName() { return prop;}
@Override
void drive() {}
}
@Component
public class Bike implements vehicle {
private static string prop = "bike";
@Override
string getVehicleName() { return prop;}
@Override
void drive() {}
}
@Service
public class VehicleFactory {
@Autowired
private List<vehicle> vehicles;
private static final HashMap<String, vehicle> requestVehicleMap = new HashMap<>();
@PostConstruct
public void initVehicleFactory() {
for(vehicle vehicle : vehicles) {
requestVehicleMap.put(vehicle.getVehicleName(), request);
}
}
public static vehicle getVehicleImpl(String vehicleName) {
return requestVehicleMap.get(vehicleName);
}
}
Это дает мне правильный класс.
Также есть «квалификатор», который можно использовать как Реализация пользовательского шаблона фабрики в Spring .
Но есть ли лучший подход?