我应该在这里使用全局变量吗?

Neo*_*mex 2 java global-variables

为什么使用全局变量是个坏主意?

我想为所有要使用的类创建一个可用的变量数组.它将存储关键状态,因此不能将其设置为const(final).

你能告诉我一些其他(正确的)如何做到这一点的方法吗?

And*_*ter 6

为什么使用全局变量是个坏主意?

因为它破坏了封装.所有代码都可以访问它们并进行修改.

我想为所有要使用的类创建变量数组

如果所有代码只使用一个实例,则可以使用单例:

public class MyGlobalKeys {
    private static final MyGlobalKeys globals = new MyGlobalKeys();

    // disable construction outside of this class
    private MyGlobalKeys() {}

    public void getInstance() {
       return globals;
    }

    public void addKey(String key, bool state) { ... }
    public bool hasKey(String key) { ... }
    // and so on ...
}
Run Code Online (Sandbox Code Playgroud)

请注意,此示例特别不是线程安全的 - 对于改进的实现方法,请参阅Java Singleton Design Pattern

  • 所以一方面你说全局状态破坏了封装,但你仍然建议使用单例... (5认同)