Я действительно не думаю, что приложение калькулятора хорошо подходит для паттерна 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 или что-то еще). В диалоговом окне вы можете использовать четыре переключателя, чтобы установить режимы, текстовое поле для ввода ввода и текстовое поле или метку для печати фактического результата.