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は初めてなので、複数のクラスを作成せずにこのコードをリファクタリングする方法はありますか?インターフェースに含まれるメソッドは1つだけなので、ラムダを使用してリファクタリングできますか?