使GUI静态还是非静态

3
我正在制作一个GUI类,用于处理简单的任务,例如弹出窗口、填充几个面板和其他组件,没有什么复杂的内容。
我想知道最佳实践是什么:
  • 在GUI类中对所有内容进行静态调用

  • 实例化我的GUI类对象,并在该对象上调用方法。这是“通常”的做法。

请注意,我是Java新手。如果我理解错了什么,我很乐意学习。
谢谢!

1
尝试理解静态变量,然后根据您的需求进行设计。http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html - dev2d
你应该避免使用静态窗口,而应该使用类实例、事件、方法等。如果你问我的话,这是最佳实践。 - Filip
6个回答

1
我建议在某处使用单个静态方法,如“getInstance”,并在其他地方使用普通的面向对象编程。如果将GUI中的所有内容都设为静态的,可能会在以后发现需要继承、多态或其他常见的面向对象编程特性时出现问题。

@Goatcat OOP:面向对象编程 - pinkpanther

1
我会选择第二种方法,即实例化我的GUI类的对象,因为在TDD方法中,静态方法并不好。当我说不好时,它意味着静态方法有时很难模拟。
理想情况下,当方法处理对象状态时,应该使用实例方法。当没有依赖于对象状态时,应该选择静态方法。
但是,在引入TDD并且存在级联静态方法的情况下,有时在某些框架(如unitils和其他各种框架)中编写junits很困难,这时人们通常更喜欢使用实例方法,即使他们同样有充分的理由去使用静态方法。
除此之外,使用类级别的方法,您将失去面向对象编程模型的其他能力,例如多态性。

0

这真的取决于情况。对于非常小的项目,可以在主类文件中制作所有内容并使每个组件静态化。然而,随着项目变得越来越大,您肯定会想添加其他类。

我目前正在开发一个项目,当我将所有GUI部分集成到主类中并使用其他类处理数据之间的关系时,它的表现更好。无论如何:GUI应该独立于数据,并且最好使用类来处理复杂的数据。


0

我强烈建议您按照“通常”的方式来做。虽然在可能的情况下(封装到util类中,更好的测试可能性,更容易复用)使用静态方法是一个好的方法,但我不建议您在GUI方面这样做。如果您使GUI变成了静态的,它将像单例一样运作,从而让您无法同时创建多个实例,比如窗口、框架等。


0
你应该按需实例化GUI对象,并使用事件来交换消息或动作。静态或非静态 - 由你决定。

0
我总是使用线程安全的单例模式来将GUI的一个部分的事件委托给另一个部分。

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