Pregunta

He leído sobre el patrón del estado y ahora estoy buscando más mi conocimiento explorando una solicitud de swing (expule: calculadora) que lo implementa.

¿Dónde puedo encontrar tal tutorial?

Debe mostrar una aplicación realmente simple que usa el swing.Estoy confundido acerca de ¿cómo se podría usar el patrón del estado en un proyecto de swing?

¿Fue útil?

Solución

Realmente no creo que una aplicación de calculadora sea una buena coincidencia para el patrón del estado.Una calculadora simple no tiene demasiados estados, tal vez encendido / apagado, pero eso es demasiado trivial.Una herramienta de dibujo es una mejor coincidencia.

Si realmente desea desarrollar una calculadora basada en el patrón de estado, realmente necesita ser bastante creativo.¿Pero por qué no?Puede inventar / implementar una calculadora donde las operaciones básicas (adición, sustracción, multiplicación, división) son modos (estados):

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);
  }
}

Este es un borrador muy simple y básico y, por supuesto, no cubre la parte de la vista (diálogo de swing o lo que sea).En el cuadro de diálogo, podría usar cuatro botones de radio para configurar los modos, un campo de texto para capturar la entrada y un campo de texto o una etiqueta para imprimir el resultado real.

Otros consejos

Una muestra que encuentra aquí

Utilicé este patrón en una aplicación de swing para representar una herramienta de dibujo seleccionada (línea, polígono, etc.).

Una aplicación completa que utiliza el patrón de estado de esta manera es jhotdraw

Editar: Para una calculadora, se podría usar para asignar pulsaciones de teclas (dígitos ingresados y operadores) en el modo de cálculo (== estado) y en el modo de dibujo de gráficos (2do estado) para el zoom y el movimiento del gráfico que se muestra.

Para representar un modo como DEG, RAD y GRA (grados, radianos) No debe usar el patrón de estado.Esto sería demasiado diseñado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top