我对我正在做的一个项目有疑问。
场景是有一艘宇宙飞船,上面有 4 名船员,每个船员可以处理船上某种类型的故障,这 4 名船员是:
Space Monkey - 他可以处理 TRIVIAL 故障 Service Robot - 他可以处理 LOW 故障 Engineer - 他可以处理 MEDIUM 故障 Captain - 他可以处理 HIGH/ALL 故障
现在我已经实现了命令链设计模式,如果创建了 4 个对象中的一个并出现故障,它将查看他们是否可以处理它,如果不能,他们会将其传递给下一个工作人员.
但这很好,但现在我这样做是为了让船长可以处理他可以处理的低优先级故障。
我有一个名为 processMalfunction 的方法,它接受一个 Malfunction 类型的对象(一个 Malfucntion 对象接受一个表示严重性的枚举和一个给出故障描述的字符串)
然后将故障与接到故障的机组成员进行比较,在这种情况下,如果是船长处理低优先级故障,他将能够处理它。
我可以执行 if 语句来比较当前故障枚举是否与机组成员的能力级别枚举匹配,但我需要某种方式将其与低于他能力的其他级别进行比较,以防他被授予较低级别任务。
这是 processMalfunction(Malfunction m) 方法的代码片段
final protected void processMalfunction(Malfunction m) {
if (competence.ordinal() >= m.getSeverity().ordinal()) {
handleProblem(m);
}
else {
next.handleProblem(m);
}
}
这是故障类的副本
public class Malfunction {
/**
* instance variable which will hold an enum of the severity type.
*/
Severity severity;
/**
* instance variable which will display a string describing the problem.
*/
String description;
/**
* This constructor will take a severity level and a string and display the appropriate
* message if it is able to handle the problem. If there is no string given, it will
* display a default message.
* @param s severity level of type enum
* @param d string which outputs the description of the problem
*/
public Malfunction(Severity s, String d) {
if (d == null || d.isEmpty()) {
this.description = "No description available. Probably serious.";
} else {
this.severity = s;
this.description = d;
}
}
/**
* accessor method which returns an enum showing the level of severity of the problem.
* @return Severity level enum
*/
public Severity getSeverity() {
return severity;
}
/**
* accessor method which returns a string which gives a description of what the problem is.
* @return Severity level enum
*/
public String getDescription() {
return description;
}
}
谁能建议我将机组成员的枚举类型与从机组成员能力传递到最低的故障枚举进行比较的最佳方法
即,如果工程师通过了低级故障 id 需要检查枚举 MEDIUM、LOW 和 TRIVIAL 以确保他可以像 if 语句中那样处理故障,如果他可以处理它,他会的。所以我需要它基本上说
如果故障级别等于或小于机组成员的枚举能力级别,则处理故障,如果不是,则将其传递。
任何帮助将不胜感激。
亲切的问候
Ĵ