我有这个 UML 图,想要使用状态设计模式来实现 InProgressState、HelpState 和 EscapeState。 详情如下:
注:
我有一个名为 ParticipantState 的类:
public interface ParticipantState {
ParticipantState solveRiddle(String input, Riddle[] riddleList, int whichRiddle) throws RiddleException;
}
我认为 InProgressState、HelpState 和 EscapedState 应该实现 ParticipantState,如下所示:
public class InProgressState implements ParticipantState{
@Override
public ParticipantState solveRiddle(String input, Riddle[] riddleList, int whichRiddle) throws RiddleException {
return this;
}
}
代码就像这样
public class HelpState implements ParticipantState{
@Override
public ParticipantState solveRiddle(String input, Riddle[] riddleList, int whichRiddle) throws RiddleException {
Riddle riddle = riddleList[whichRiddle];
if (riddle.isSolved())
throw new RiddleException("Already Solved");
riddle.setSolved();
boolean isEsacped = true;
for (Riddle item :
riddleList) {
if (item.isSolved() != true) {
isEsacped = false;
break;
}
}
if (isEsacped)
return new EscapedState();
else
return new InProgressState();
}
}