Tengo una base de código antigua que necesito refactorizar con Java 8, por lo que tengo una interfaz que indica si mi sitio actual es compatible con la plataforma.
public interface PlatformSupportHandler {
public abstract boolean isPaltformSupported(String platform);
}
y tengo varias clases que lo implementan y cada clase admite una plataforma diferente.
Algunas de las clases de implementación son:
@Component("bsafePlatformSupportHandler")
public class BsafePlatoformSupportHandler implements PlatformSupportHandler {
String[] supportedPlatform = {"iPad", "Android", "iPhone"};
Set<String> supportedPlatformSet = new HashSet<>(Arrays.asList(supportedPlatform));
@Override
public boolean isPaltformSupported(String platform) {
return supportedPlatformSet.contains(platform);
}
}
Otra implementación:
@Component("discountPlatformSupportHandler")
public class DiscountPlatoformSupportHandler implements PlatformSupportHandler{
String[] supportedPlatform = {"Android", "iPhone"};
Set<String> supportedPlatformSet = new HashSet<>(Arrays.asList(supportedPlatform));
@Override
public boolean isPaltformSupported(String platform) {
return supportedPlatformSet.contains(platform);
}
}
En tiempo de ejecución en mi filtro, obtengo el bean requerido que quiero:
platformSupportHandler = (PlatformSupportHandler) ApplicationContextUtil
.getBean(subProductType + Constants.PLATFORM_SUPPORT_HANDLER_APPEND);
y llame isPlatformSupported
para saber si mi sitio actual es compatible con la siguiente plataforma o no.
Soy nuevo en Java 8, ¿hay alguna forma de refactorizar este código sin crear varias clases? Como la interfaz solo contiene un método, ¿puedo usar lambda de alguna manera para refactorizarlo?