我已经阅读了州模式,现在我正在探索实现它的挥杆应用程序(Exple:Calculator)来进一步了解我的知识。

我在哪里可以找到这样的教程?

它必须展示一个使用swing的真正简单的应用程序。我很困惑国家模式如何在Swing项目中使用?

有帮助吗?

解决方案

我真的不认为计算器应用程序是州模式的好匹配。一个简单的计算器没有太多状态,也许开/关,但这太微不足道了。绘图工具是更好的匹配。

如果您真的想基于状态模式开发计算器,您真的需要非常有创意。但为什么不呢?您可以创建/实现一个计算器,其中基本操作(添加,源,乘法,划分)是模式(状态):

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

这是一个非常简单和基本的选秀,当然,不涵盖视图部分(Swing对话框或其他)。在对话框中,您可以使用四个单选按钮来设置模式,以捕获输入和文本字段或标签以打印实际结果的文本字段。

其他提示

您找到的样本这里

我在Swing应用程序中使用此模式以表示所选的绘图工具(线,多边形等)。

以这种方式使用状态模式的完整应用程序是 jhotdraw

编辑:对于计算器,它可用于在计算模式(==状态)和图形绘图模式(第2个状态)中映射击键(输入的数字和运算符),以进行缩放和显示的图形的移动。

表示像DEG,RAD和GRA(度,弧度)等模式,您不应该使用状态模式。这将是在设计的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top