Boa noite a todos,
Estou com uma grande dúvida, tenho um projeto o qual irá realizar tarefas diferentes dependendo do "PROVIDER" o qual for retornado pelo ENUM abaixo:
public enum ProviderService {
Brasil("V", new ViatorProductService()),
America("M", new AmericaProductService());
private static final ProviderService[] copyOfValues = values();
@Getter private String prefix;
@Getter private ProductServiceImpl productService;
private ProviderService(String prefix, ProductServiceImpl productService) {
this.prefix = prefix;
this.productService = productService;
}
public static ProviderService forPrefix(String prefix) {
for (ProviderService value : copyOfValues) {
if (value.prefix.equals(prefix)) {
return value;
}
}
return null;
}
}
@Service
public class BrasilProductService implements ProductServiceImpl {
public List<ProductDateAvailability> getProductDateAvailability(AvailableDateFilter filter) {
omitido...
return null;
}
}
public interface ProductServiceImpl {
List<ProductDateAvailability> getProductDateAvailability(AvailableDateFilter filter);
}
Minha dúvida é, já que meu sistema não mantém sessão, e o ENUM apenas cria 1 instância de suas CONSTANTES, estará errado a forma que faço acima ? pois estou tentando aplicar uma abstração, já que com base no Provider, terei suas respectivas classes de SERVIÇO, o qual irei usar métodos similares, só com a modificação de cada provider.
Teria algum problema em realizar a tarefa da forma acima? ou pelo fato da instância ser SINGLETON, teria algum problema?