Ich habe eine alte Codebasis, die ich mit Java 8 umgestalten muss, daher habe ich eine Schnittstelle, die angibt, ob meine aktuelle Site die Plattform unterstützt.
public interface PlatformSupportHandler {
public abstract boolean isPaltformSupported(String platform);
}
und ich habe mehrere Klassen, die es implementieren, und jede Klasse unterstützt eine andere Plattform.
Einige der implementierenden Klassen sind:
@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);
}
}
Eine weitere Implementierung:
@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);
}
}
Zur Laufzeit in meinem Filter erhalte ich die gewünschte Bean, die ich möchte:
platformSupportHandler = (PlatformSupportHandler) ApplicationContextUtil
.getBean(subProductType + Constants.PLATFORM_SUPPORT_HANDLER_APPEND);
und rufen Sie isPlatformSupportedan, um zu erfahren, ob meine aktuelle Site die folgende Plattform unterstützt oder nicht.
Ich bin neu in Java 8, gibt es also eine Möglichkeit, diesen Code umzugestalten, ohne mehrere Klassen zu erstellen? Kann ich Lambda verwenden, um es umzugestalten, da die Schnittstelle nur eine Methode enthält?