声明像这样的对象是不好的
public static GUI g = new GUI();
或者当我希望多个方法能够使用同一个对象时,我应该避免创建公共对象吗?
答案 0 :(得分:2)
是的,将对象公开为公共静态变量通常是不好的,因为每个人都有对它的写访问权。使变量final
稍微好一些,但最好的解决方案是制作变量private
,并提供静态getter。
答案 1 :(得分:1)
静态通常被认为是不可测试的,而且很糟糕。每个静态对象都是您要测试的所有内容的隐式输入,测试都是关于控制输入和试验方法响应精确参数的行为。
相反,您应该将GUI对象的显式引用传递给需要它的每个类。有许多方法可以简化涉及的簿记;通常涉及依赖注入。
答案 2 :(得分:0)
执行您要实现的目标的典型模式是Singleton
答案 3 :(得分:0)
这个概念被称为“单身人士”模式。在Java中不像在Objective-C等其他语言中那样流行。这是一个每个人都批评但每个人都在使用的概念,尽管通常以这种或那种方式伪装。
总的来说,全球数据的一个大问题是,过多的数据不是/不应该是全局的,因此比全局更简单,因为这比确定如何正确划分数据和管理其可寻址性更简单。这会导致应用程序的智能复杂性呈指数级增长,并且很快就会失控。因此,在一些适当的情况下使用全局静态(无论是否final
)没有任何问题。危险在于你养成了在每个案例中使用它的习惯,或者至少有很多你不再能理解你的应用程序的习惯。在多开发人员环境中,这会增加一倍(或者可能是四倍)。