Padrão de estado em Java
-
18-09-2020 - |
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?
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.