return () -> {
Objects.requireNonNull(serviceName);
IService service = null;
try {
service = (T) Class.forName(serviceName).getDeclaredConstructor().newInstance();
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | IllegalArgumentException
| InvocationTargetException | NoSuchMethodException | SecurityException e) {
Logger logger = LogManager.getLogger(ServiceFactory.class);
logger.error("Error Occurred obtaining service. Exception {}", e);
}
return (T) service;
};