我正在制作一个 GUI 类来处理简单的任务,比如弹出一个窗口,用几个面板和其他组件填充它,没什么复杂的。
我想知道最佳做法是什么:
对 GUI 类中的所有内容进行静态调用
实例化我的 GUI 类的对象并调用该对象的方法。“通常”的方式。
请注意,我是 Java 新手。如果我误解了某些东西,我会很高兴学习。
谢谢!
我正在制作一个 GUI 类来处理简单的任务,比如弹出一个窗口,用几个面板和其他组件填充它,没什么复杂的。
我想知道最佳做法是什么:
对 GUI 类中的所有内容进行静态调用
实例化我的 GUI 类的对象并调用该对象的方法。“通常”的方式。
请注意,我是 Java 新手。如果我误解了某些东西,我会很高兴学习。
谢谢!
我建议在getInstance
某处使用像“”这样的单一静态方法,并在其他地方使用普通的 OOP。如果您发现需要继承、多态性或 OOP 的其他一些常用特性,那么在 GUI 中将所有内容都设置为静态可能会导致问题。
我会采用第二种方法,即实例化我的 GUI 类的对象,因为静态方法在 TDD 方法方面不好。当我说不好时,这意味着静态方法很难模拟一段时间。
理想情况下,只要方法处理对象的状态,您就应该使用实例方法。在不依赖对象状态的情况下,如果使用实用方法,则应选择静态方法。
但是当你把 TDD 放在图片中并且有级联的静态方法时,有时在 unitils 和其他各种不支持模拟静态方法的框架中编写 junit 很困难,人们通常更喜欢实例方法,即使他们有同样好的理由用于静态方法。
除了使用类级别的方法之外,您还失去了 oops 模型的其他功能,例如多态性
我强烈建议您以“通常”的方式进行操作。虽然在可能的情况下使用静态方法(!)通常是一种好方法(外部化到 util 类,更好的测试可能性,更容易重用),但我不建议将它用于您的 GUI。如果你想让你的 GUI 是静态的,它会像一个单例一样,从而让你有机会同时创建多个实例,例如你的窗口、框架等。
您应该按需实例化 GUI 对象,并使用事件来交换消息或操作。静态与否 - 由您决定。
我总是使用线程安全的单例将事件从 GUI 的一部分委托给 GUI 的另一部分。
这真的取决于。对于一个非常小的项目,可以将主类文件中的所有内容都设置为静态,并将每个组件设置为静态。但是,随着项目变得越来越大,您肯定会想要添加其他类。
我目前正在开发一个项目,当我将所有 GUI 部分集成到主类中并使用其他类来处理数据之间的关系时,它的表现会更好。无论如何:GUI应该独立于数据,最好使用类来处理复杂的数据。