Шаблон состояния: это все еще хороший дизайн, если состояние либо просто генерирует исключение, либо меняет свое состояние?

Я пытаюсь использовать паттерн Состояние. В зависимости от того, в каком состоянии находится контекст, будет выдано другое сообщение об ошибке или сообщение об ошибке не появится вообще. Однако я не уверен, что это правильный способ использования исключений. Ниже приведен код для дальнейшего пояснения. Я специально исключил модификаторы.

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
}

0 ответов

Другие вопросы по тегам