Domanda

Ho letto di State Pattern e ora sto cercando di ulteriori mie conoscenze esplorando un'applicazione swing (Exple: Calculator) che lo implementa.

Dove posso trovare un tutorial del genere?

Deve mostrare un'applicazione davvero semplice che utilizza Swing.Sono confuso su come il modello di stato potrebbe essere utilizzato in un progetto Swing?

È stato utile?

Soluzione

Io davvero non penso che un'applicazione di calcolatrice sia una buona corrispondenza per il modello di stato.Un semplice calcolatore non ha troppi stati, forse acceso / spegnimento, ma è troppo banale.Uno strumento di disegno è una corrispondenza migliore.

Se vuoi davvero sviluppare un calcolatore basato sul modello di stato che devi davvero essere abbastanza creativo.Ma perchè no?È possibile inventare / implementare un calcolatore in cui le operazioni di base (aggiunta, substrazione, moltiplicazione, divisione) sono modalità (Stati):

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

Questa è una bozza molto semplice e di base e, ovviamente, non copre la parte Visualizza (finestra di dialogo Swing o qualsiasi altra cosa).Nella finestra di dialogo è possibile utilizzare quattro pulsanti di opzione per impostare le modalità, un campo di testo per acquisire l'ingresso e un campo di testo o un'etichetta per stampare il risultato effettivo.

Altri suggerimenti

Un esempio che trovi qui

Ho usato questo modello in un'applicazione swing per rappresentare uno strumento di disegno selezionato (linea, poligono, ecc.).

Un'applicazione completa che utilizza il modello di stato in questo modo è jhotdraw

Modifica: per una calcolatrice potrebbe essere utilizzato per mappare le sequenze di tasti (cifre e operatori immessi) in modalità di calcolo (== stato) e in modalità disegno grafico (2 ° stato) per lo zoom e il movimento del grafico visualizzato. Per rappresentare una modalità come Deg, Rad e GRA (gradi, radianti) non dovresti usare il modello di stato.Questo sarebbe troppo progettato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top