Java - 静态编程风格

5
当我开始学习Java GUI(Swing)编程时,我所学的方式更像是MVC模式,它涉及使用接口来调用东西并在类之间传递变量。
最近我开始以一种更静态的方式编程,即让JFrame调用其静态JPanel并使用静态方法来更改组件。基本上,我静态地编写所有内容,以便可以轻松地从不同的类中调用它们。
这里有一个例子:
我的主JFrame类称为“Home”,我静态地初始化了Toolbar类:
private static Toolbar toolbar = new Toolbar();

现在每当我想做某件事,比如改变颜色,我只需从另一个类中调用它:
Home.toolbar.setForeground(Color.green);

这种编程方式是否可行?到目前为止,我还没有遇到任何问题,但我被学习的人没有使用它所抓住了,而这种方式似乎更容易实现。

这种编程方式有什么大的不利之处吗? 还有其他的选择吗?

2个回答

4
基本上,你应该问自己:
toolbar 应该与我创建的每个对象相关联吗?还是应该为所有对象创建一个,一旦我更改它,所有对象都将更改?”
如果你回答“是”,那么没问题,否则它不应该是 static
当然,在考虑这个问题时还有很多其他事情要考虑。例如,static 资源不是线程安全的。

1
答案可能是肯定的 - 当我制作GUI组件时,它们通常在整个界面上都是相同的。我通常只需要其中一个。我还需要研究一下线程安全的问题,以前从未考虑过。 - Crizly
2
@Crizly MarounMaroun的意思是,你需要针对你定义的每个字段进行推断,以了解它是否为“静态”或非“静态”,工具栏只是一个例子。 - Luiggi Mendoza

3
如果它正常工作,那太好了... 它是正确的。
然而,我的目标是编写既易于维护又易于测试的代码。静态实例的问题在于它会在整个项目中创建强耦合性。此外,尝试隔离一个类是不可能的,因为无法模拟或注入静态依赖关系。
通常,GUI 代码无法进行单元测试。但 MVC 可以确保可测试的代码与 GUI 代码分离。

我在大学学习Java,对此还很陌生。哪些代码部分需要进行单元测试? - Crizly
1
模型和控制器需要进行测试。视图中的逻辑应该仅限于管理用户界面。我们的想法是将业务逻辑和过程逻辑与用户界面分开并进行测试。 - Isaiah van der Elst

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接