我有一个老的代码库需要使用Java 8重构,因此我有一个接口,用于判断当前网站是否支持该平台。
public interface PlatformSupportHandler {
public abstract boolean isPaltformSupported(String platform);
}
我有多个实现它的类,每个类都支持不同的平台。
其中一些实现类包括:
@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);
}
}
另一种实现:
@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);
}
}
在我的过滤器中,在运行时获取我所需的bean:
platformSupportHandler = (PlatformSupportHandler) ApplicationContextUtil
.getBean(subProductType + Constants.PLATFORM_SUPPORT_HANDLER_APPEND);
然后调用isPlatformSupported
来获取当前网站是否支持以下平台。
我对Java 8还很陌生,所以有没有办法在不创建多个类的情况下重构这段代码?由于接口只包含一个方法,我能否使用lambda表达式进行重构?