您可以让您的ComponentStatusVerifier
that 检查一个组件还检查它是否应该在运行时根据它的运行位置进行验证。您的verify
方法应该扩展一点来支持它:它应该接收相关参数:就像应用程序所在的平台:
interface ComponentStatusVerifier {
boolean verify(VerificationParameters parameters);
}
interface VerificationParameters {
Platform getPlatform();
}
enum Platform {
PLATFORM1,
PLATFORM2 // ...
}
此外,根据您的描述,某些诊断信息似乎很重要,而不是简单的boolean
结果。为此,我将创建一个消息列表,其中包含验证者可以报告的信息,如下所示:
interface ComponentStatusVerifier {
VerificationResults verify(VerificationParameters parameters);
}
interface VerificationResults {
boolean succeeded();
Iterable<Message> getMessages();
}
interface Message {
string getDescription();
MessageType getType();
}
enum MessageType {
INFO,
WARNING,
ERROR
}
(请注意,我使用接口和枚举只是为了展示概念,酌情调整......)
在它不支持的平台上运行的验证器可以这样做:
class Platform1SomeComponentVerifier implements ComponentStatusVerifier {
@Override
public VerificationResults verify(VerificationParameters parameters) {
VerificationResults results = new ...
if (parameters.getPlatform() != Platform.PLATFORM1) {
results.addMessage(
new InfoMessage("Skipping verification of component, platform is not PLATFORM1"));
return results;
}
...
}
}