Шаблон состояния: это все еще хороший дизайн, если состояние либо просто генерирует исключение, либо меняет свое состояние?
Я пытаюсь использовать паттерн Состояние. В зависимости от того, в каком состоянии находится контекст, будет выдано другое сообщение об ошибке или сообщение об ошибке не появится вообще. Однако я не уверен, что это правильный способ использования исключений. Ниже приведен код для дальнейшего пояснения. Я специально исключил модификаторы.
class Context {
State currentState;
void changeState(State newState) {
currenState = newState;
}
void operationA() {
currentState.tryOperationA();
// do operation A
}
// some more operations all with same structure but different functionality
}
abstract class State {
Context context;
State (Context context) {
this.context = context;
}
void tryOperationA() {
throw new IllegalStateException();
}
// some more tryOperation...
}
class AllowOpAState extends State {
@Override
void tryOperationA() {
context.changeState(new AnotherState());
}
}
class AnotherState extends State {
// changes state with other operations
}