Шаблон состояния в Java - PullRequest
1 голос
/ 21 июля 2010

Я читал о шаблоне состояний, и теперь я хочу расширить свои знания, исследуя приложение Swing (exple: calculator), которое его реализует.

, где я могу найти такое руководство?

он должен демонстрировать действительно простое приложение, использующее Swing.Я не понимаю, как можно использовать State State в проекте Swing?

Ответы [ 2 ]

4 голосов
/ 21 июля 2010

Я действительно не думаю, что приложение калькулятора хорошо подходит для паттерна State. Простой калькулятор не имеет слишком много состояний, может быть, вкл / выкл, но это слишком тривиально. Инструмент для рисования лучше подходит.

Если вы действительно хотите разработать калькулятор на основе паттерна состояния, вам действительно нужно быть достаточно креативным. Но почему нет? Вы можете изобрести / реализовать калькулятор, в котором основными операциями (сложение, вычитание, умножение, деление) являются режимы (состояния):

public enum Modes {ADDITION, SUBTRACTION, MULITPLICATION, DIVISION}

public interface Mode {
  double calculate(double a, double b);
}

public class AdditionMode implements Mode {
  public double calculate(double a, double b) {
    return (a+b);
  }
}
// similiar classes for other math operation modes

public class Calculator {
  private Mode mode;
  public setMode(Modes mode) {
    switch (mode) {
      case ADDITION: this.mode = new AdditionMode();
      // ...
    }
  }
  public double calculate(double a, double b) {
    return mode.calculate(a, b);
  }
}

Это очень простой и базовый черновик, и, конечно, он не охватывает часть View (диалог Swing или что-то еще). В диалоговом окне вы можете использовать четыре переключателя, чтобы установить режимы, текстовое поле для ввода ввода и текстовое поле или метку для печати фактического результата.

3 голосов
/ 21 июля 2010

образец вы найдете здесь

Я использовал этот шаблон в приложении Swing для представления выбранного инструмента рисования (линии, многоугольника и т. Д.).

Полное приложение, которое использует шаблон состояния таким образом: JHotDraw

РЕДАКТИРОВАТЬ: Для калькулятора он может использоваться для отображения нажатий клавиш (введенные цифры и операторы) в режиме расчета (состояние ==) и в режиме рисования графика (2-е состояние) для масштабирования и перемещения отображаемого графика.

Для представления таких режимов, как DEG, RAD и GRA (градусы, радианы), вы не должны использовать шаблон состояний. Это было бы чрезмерно спроектировано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...