Como tenho uma base de código antiga que preciso refatorar usando o Java 8, tenho uma interface que informa se meu site atual suporta a plataforma.
public interface PlatformSupportHandler {
public abstract boolean isPaltformSupported(String platform);
}
e eu tenho várias classes implementando-o e cada classe suporta uma plataforma diferente.
Algumas das classes de implementação são:
@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);
}
}
Outra implementação:
@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);
}
}
Em tempo de execução no meu filtro, recebo o bean necessário que desejo:
platformSupportHandler = (PlatformSupportHandler) ApplicationContextUtil
.getBean(subProductType + Constants.PLATFORM_SUPPORT_HANDLER_APPEND);
e ligue isPlatformSupported
para saber se meu site atual é compatível com a plataforma a seguir ou não.
Eu sou novo no Java 8, então existe alguma maneira de refatorar esse código sem criar várias classes? Como a interface contém apenas um método, posso de alguma forma usar o lambda para refatorá-lo?