Tôi có một cơ sở mã cũ mà tôi cần phải cấu trúc lại bằng Java 8, vì vậy tôi có một giao diện, cho biết liệu trang web hiện tại của tôi có hỗ trợ nền tảng hay không.
public interface PlatformSupportHandler {
public abstract boolean isPaltformSupported(String platform);
}
và tôi có nhiều lớp thực hiện nó và mỗi lớp hỗ trợ một nền tảng khác nhau.
Một vài trong số các lớp thực hiện là:
@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);
}
}
Một cách thực hiện khác:
@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);
}
}
Trong thời gian chạy trong bộ lọc của tôi, tôi nhận được bean yêu cầu mà tôi muốn:
platformSupportHandler = (PlatformSupportHandler) ApplicationContextUtil
.getBean(subProductType + Constants.PLATFORM_SUPPORT_HANDLER_APPEND);
và gọi isPlatformSupported
để biết liệu trang web hiện tại của tôi có hỗ trợ nền tảng sau hay không.
Tôi chưa quen với Java 8, vậy có cách nào để tôi có thể cấu trúc lại mã này mà không cần tạo nhiều lớp không? Vì giao diện chỉ chứa một phương thức, bằng cách nào đó tôi có thể sử dụng lambda để cấu trúc lại nó không?