質問

州のパターンについて読み、今、私はそれを実装するスイングアプリケーション(見出し:電卓)を探索することによって私の知ることを探しています。

このようなチュートリアルはどこにありますか?

スイングを使用する本当に簡単なアプリケーションを展示する必要があります。スイングプロジェクトでの状態パターンをどのように使用できるかについて混乱していますか?

役に立ちましたか?

解決

電卓アプリケーションが状態パターンに良いマッチであるとは思わない。単純な電卓にはあまりにも多くの状態がありません、多分オン/オフが多すぎる。描画ツールはより良い一致です。

あなたが本当に州のパターンに基づいて電卓を開発したい場合は、本当にかなり創造的である必要があります。しかし、なぜですか?基本的な操作(加算、部分破算、乗算、除算)がモード(状態)になっている計算機を発明/実行することができます。

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

これは非常にシンプルで基本的なドラフトであり、もちろん、ビュー部分(スイングダイアログまたは何でも)をカバーしていません。ダイアログ上では、4つのラジオボタンを使用してモード、入力をキャプチャするテキストフィールド、およびテキストフィールドまたは実際の結果を印刷するためのテキストフィールドまたはラベルを設定できます。

他のヒント

サンプル

選択した描画ツール(行、多角形など)を表すためにスイングアプリケーションでこのパターンを使用しました。

このように状態パターンを使用するフルアプリケーションは、 jhotdraw

です。

編集:計算機の場合、ズームと表示されているグラフのズームと動きのための、キーストローク(==状態)とグラフ描画モード(第2状態)でキーストローク(入力された数字と演算子)をマッピングすることができます。

DEG、RAD、GRA(度、ラジアン)のようなモードを表すために、状態パターンを使用しないでください。これはオーバーエンジニアリングされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top