Pergunta

Eu li sobre padrão de estado e agora estou procurando aprofundar meu conhecimento explorando uma aplicação Swing (exple:calculadora) que o implementa.

onde posso encontrar esse tutorial?

deve apresentar um aplicativo realmente simples que usa Swing.Estou confuso sobre como o State Pattern pode ser usado em um projeto Swing?

Foi útil?

Solução

Eu realmente não acho que um aplicativo de calculadora seja uma boa combinação para o padrão State.Uma calculadora simples não tem muitos estados, talvez ligado/desligado, mas isso é muito trivial.Uma ferramenta de desenho é uma combinação melhor.

Se você realmente deseja desenvolver uma calculadora baseada no padrão de estado, você realmente precisa ser bastante criativo.Mas porque não?Você poderia inventar/implementar uma calculadora onde as operações básicas (adição, subtração, multiplicação, divisão) sejam 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 é um rascunho muito simples e básico e, claro, não cobre a parte View (caixa de diálogo Swing ou qualquer outra).Na caixa de diálogo você pode usar quatro botões de opção para definir os modos, um campo de texto para capturar a entrada e um campo de texto ou rótulo para imprimir o resultado real.

Outras dicas

uma amostra que você encontra aqui

Eu usei esse padrão em um aplicativo de balanço para representar uma ferramenta de desenho selecionada (linha, polígono, etc.).

Um aplicativo completo que usa o padrão do estado desta maneira é jhotdraw

Editar: Para uma calculadora, ele pode ser usado para mapear pressionamentos de tecla (digitais digitais e operadores) no modo de cálculo (== estado) e no modo de desenho de gráfico (2º estado) para zoom e movimento do gráfico exibido.

Para representar um modo como órci, rad e gra (graus, radianos), você não deve usar o padrão do estado.Isso seria mais projetado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top