Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的状态模式_Java_Design Patterns_State Pattern - Fatal编程技术网

Java中的状态模式

Java中的状态模式,java,design-patterns,state-pattern,Java,Design Patterns,State Pattern,我已经阅读了关于状态模式的内容,现在我希望通过探索实现它的Swing应用程序(exple:calculator)来进一步了解它 我在哪里可以找到这样的教程 它必须展示一个使用Swing的非常简单的应用程序。我对如何在Swing项目中使用状态模式感到困惑?您可以找到一个示例 我在swing应用程序中使用此模式来表示所选的绘图工具(直线、多边形等) 以这种方式使用状态模式的完整应用程序是 编辑:对于计算器,它可用于在计算模式(=状态)和图形绘制模式(第二状态)下映射按键(输入的数字和运算符),以缩放

我已经阅读了关于状态模式的内容,现在我希望通过探索实现它的Swing应用程序(exple:calculator)来进一步了解它

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

它必须展示一个使用Swing的非常简单的应用程序。我对如何在Swing项目中使用状态模式感到困惑?

您可以找到一个示例

我在swing应用程序中使用此模式来表示所选的绘图工具(直线、多边形等)

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

编辑:对于计算器,它可用于在计算模式(=状态)和图形绘制模式(第二状态)下映射按键(输入的数字和运算符),以缩放和移动显示的图形

要表示DEG、RAD和GRA(度、弧度)等模式,不应使用状态模式。这将是过度设计

你找到的样本

我在swing应用程序中使用此模式来表示所选的绘图工具(直线、多边形等)

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

编辑:对于计算器,它可用于在计算模式(=状态)和图形绘制模式(第二状态)下映射按键(输入的数字和运算符),以缩放和移动显示的图形


要表示DEG、RAD和GRA(度、弧度)等模式,不应使用状态模式。这将是过度设计

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

如果你真的想开发一个基于状态模式的计算器,你真的需要很有创造力。但为什么不呢?您可以发明/实现一个计算器,其中基本运算(加法、减法、乘法、除法)为模式(状态):


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

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

如果你真的想开发一个基于状态模式的计算器,你真的需要很有创造力。但为什么不呢?您可以发明/实现一个计算器,其中基本运算(加法、减法、乘法、除法)为模式(状态):


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

嗨,斯塔克,谢谢你的JHotDraw,但我觉得这对我想要的东西来说太多了。我想要一些简单的东西,比如计算器。嗨,斯塔克,谢谢你的JHotDraw,但我觉得这对我想要的东西来说太多了。我想要一些简单的东西,比如计算器。我真正想看到的是如何在Swing对话框中做到这一点。我做了一些事情,但我不确定我的代码是否遵循良好的标准,这就是为什么我想看看其他人的代码。thx 4回答。我真正想看到的是如何在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);
  }
}