Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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_User Interface_Coding Style - Fatal编程技术网

Java-静态编程风格

Java-静态编程风格,java,user-interface,coding-style,Java,User Interface,Coding Style,当我第一次开始学习JavaGUI(swing)编程时,我看到的更多的是一个MVC模型,它涉及到使用接口来调用东西和跨类传递变量 我最近开始以更静态的方式编程,让Jframe调用其静态Jpanel,并使用静态方法更改组件。基本上我是静态编程的,所以我可以轻松地从不同的类调用它们 举个例子: 我的主JFrame类名为“Home”,我静态初始化Toolbar类: private static Toolbar toolbar = new Toolbar(); 现在,每当我想做一些事情,例如改变颜色,我

当我第一次开始学习JavaGUI(swing)编程时,我看到的更多的是一个MVC模型,它涉及到使用接口来调用东西和跨类传递变量

我最近开始以更静态的方式编程,让Jframe调用其静态Jpanel,并使用静态方法更改组件。基本上我是静态编程的,所以我可以轻松地从不同的类调用它们

举个例子:

我的主JFrame类名为“Home”,我静态初始化Toolbar类:

private static Toolbar toolbar = new Toolbar();
现在,每当我想做一些事情,例如改变颜色,我就从另一个班级打电话:

Home.toolbar.setForeground(Color.green);
这是一种好的编程方式吗?到目前为止,我还没有遇到任何麻烦,但我被一个事实所困扰,那就是我从那些人那里学到的东西并没有做到这一点,而这似乎更容易做到

这种编程方式有什么缺点吗?
有哪些替代方案

基本上,你应该问问自己:

“工具栏应该与我创建的每个对象关联吗?还是应该是所有对象的一个,一旦我更改了它,所有对象的工具栏都会更改?”

如果您回答自己“是”,那么就可以了,否则它不应该是静态的


当然,还有很多事情要考虑。例如,
静态
资源不是线程安全的。

如果它可以工作,那么很好。。。没错

然而,我的目标是编写既可维护又可测试的代码。静态实例的问题在于,它在整个项目中创建了强耦合。此外,试图隔离一个类是不可能的,因为不能模拟或注入静态依赖项


通常,GUI代码不能进行单元测试。然而,MVC确保了可测试代码与GUI代码分离。

答案可能是肯定的-当我制作GUI组件时,它们通常是完全相同的。我通常只需要一个。我也必须研究线程安全的问题,从来没有真正考虑过它。@Crizly Marounnaroun的意思是,为了知道它是静态的还是非静态的,工具栏只是一个例子。我在大学里对java学习很陌生,哪些代码位需要进行单元测试?模型和控制器需要进行测试。视图中的逻辑应限于管理UI。我们的想法是将任何业务和过程逻辑从UI中分离出来并进行测试。