3

像这样声明一个对象是不是很糟糕

     public static GUI g = new GUI();

或者当我希望多个方法能够使用同一个对象时,我应该避免创建公共对象吗?

4

4 回答 4

2

是的,将对象公开为公共静态变量通常是不好的,因为每个人都有对它的写访问权。制作变量final会使它稍微好一点,但最好的解决方案是制作你的变量private,并提供一个静态吸气剂。

于 2012-07-11T17:12:45.443 回答
1

该概念已被称为“单例”模型。在 Java 中不如在其他一些语言(如 Objective-C)中流行。这是一个每个人都批评但每个人都使用的概念,尽管通常以一种或另一种方式伪装。

一般来说,全局数据的一个大问题是,太多不需要/不应该是全局的数据经常被变成全局的,因为这比弄清楚如何适当地分区数据和管理其可寻址性更简单。这会导致应用程序的智力复杂性呈指数级增长,并且很快就会失控。

final所以在一些适当的情况下使用全局静态(无论是否)都没有错。危险在于您养成了在每种情况下都使用它的习惯,或者至少使用太多以至于您不再能够理解您的应用程序。在多开发人员环境中,这会增加一倍(或者可能是四倍)。

于 2012-07-11T17:49:34.393 回答
1

静态通常被认为是不可测试的,而且很糟糕。每个静态对象都是您尝试测试的所有内容的隐式输入,并且测试都是关于控制输入并试验您的方法如何响应精确参数的行为。

相反,您应该将对 GUI 对象的显式引用传递给需要它的每个类。有许多方法可以简化所涉及的簿记;通常涉及依赖注入

于 2012-07-11T17:21:00.530 回答
0

执行您要实现的目标的典型模式是Singleton

于 2012-07-11T17:14:54.210 回答