私が行っているプロジェクトについて質問があります。
シナリオは、4 人の乗組員が乗った宇宙船があり、各乗組員が船の特定の種類の故障に対処できるというものです。4 人の乗組員は次のとおりです。
スペース モンキー - 些細な故障を処理できる サービス ロボット - 低い故障を処理できる エンジニア - 中程度の故障を処理できる 船長 - 高/すべての故障を処理できる
これで、4 つのオブジェクトのいずれかが作成されて誤動作が発生した場合、それを処理できるかどうかを確認し、処理できない場合はチェーンを介して次の乗組員に渡すように、一連のコマンド設計パターンが実装されました。 .
それは問題ありませんでしたが、今はキャプテンが処理できる優先度の低い誤動作を取得できるようにしています。
タイプ Malfunction のオブジェクトを取る processMalfunction と呼ばれるメソッドがあります (Malfucntion オブジェクトは重大度である列挙型と誤動作の説明を与える文字列を取ります)
次に、故障は、故障を渡された乗組員と比較されます。この場合、機長が優先度の低い故障を取っている場合、彼はそれに対処することができます。
if ステートメントを実行して、現在の故障の列挙型が乗組員の能力レベルの列挙型と一致するかどうかを比較できますが、彼がより低いレベルを渡された場合に備えて、彼の能力を下回る他のレベルと比較する何らかの方法が必要です仕事。
processMalfunction(Malfunction m) メソッドのコード スニピットを次に示します。
final protected void processMalfunction(Malfunction m) {
if (competence.ordinal() >= m.getSeverity().ordinal()) {
handleProblem(m);
}
else {
next.handleProblem(m);
}
}
ここに Malfunction クラスのコピーがあります
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;
}
}
乗組員の列挙型と、乗組員のコンピテンシーから渡された故障列挙型を比較するための最良の方法を誰かが提案できますか?
つまり、エンジニアが LOW レベルの誤動作 ID を渡された場合、列挙型 MEDIUM、LOW、および TRIVIAL に対してチェックして、if ステートメントのように誤動作を処理できるかどうかを確認する必要があります。だから私は基本的に言う必要があります
故障レベルが乗組員の列挙能力レベル以下の場合は故障を処理し、そうでない場合はそれを渡します。
どんな助けでも大歓迎です。
敬具
J