我为一个进行电气计算的程序制作了 Swing 的“脸”。它看起来很棒,但我现在似乎面临着关于如何实现底层计算的一组令人眼花缭乱的选项。代码有点长,所以我将尝试笼统地描述。
我正在处理的面板计算电压降:
- 用户可以从一组两个单选按钮中进行选择,这些单选按钮选择计算公式的类型。
- 用户为 (7) 个不同的变量选择值,其中 (3) 个变量仅出现在公式的一种类型中。用户选择可编辑和不可编辑的组合框。
- 还有一个额外的 (4) 个变量,用户可以选择使用更多单选按钮来解决哪个变量。旁边还有一些额外的单选按钮可以更改变量的格式(即英尺、米)。
- 结果显示在文本字段中,并在用户更改值时更新。
我认为这不需要太多的处理能力,所以这一切都在事件调度线程中完成——很好,因为我对线程还不太了解。
以我对 Java 和编程的有限知识,我可以想到几种不同的方法来实现这个,可能还有一些我还不知道。即使是我所知道的那些对我来说仍然显得有点“朦胧”。
A. 使用事件监听器,当对面板进行任何合法更改时触发,并将所有变量作为字符串文字传递给一个整体逻辑类构造函数,该构造函数解析所有内容并计算结果并具有返回的方法结果。我猜它可能有不同的构造函数签名,可以帮助弄清楚要做什么。每次用户更改面板时,都会创建一个新对象来计算结果。这似乎很丑陋且难以使用。
B. “父工厂” - 除了将变量作为参数传递给抽象类中的方法外,它与 (A.) 几乎相同,该方法确定要做什么并创建其子类之一的实例。我认为,这至少会使应用程序逻辑的工作更容易一些。
C. 观察者和可观察者?我真的不太了解它是如何工作的。
D. 绑定?同样的事情-我对此还不太了解。
我还需要在不同的模块中将这种类型的计算串在一起。所以我想重用逻辑。
那么 - 我应该跳下哪个兔子洞?我不想把自己编码到一个角落里。