应该使用什么设计模式进行全局配置

时间:2012-03-06 20:14:05

标签: java design-patterns configuration global-variables

我一直在读,在一个从未实例化过的类中使用静态变量是一个坏主意,因为当类不再存在于内存中时,变量可能会变为null。有道理。

这就是我一直在做的一个例子

public class MasterParameters {

public static boolean           DEBUG_MODE =                true;
protected MasterParameters(){
    // Exists only to defeat instantiation.
}

}

我也听说使用Singleton同样糟糕,人们建议使用“依赖注入” - 但这对于我需要的东西来说似乎很复杂和过度。我只是不看正确的例子吗?

我想要一种简单的方法来定义一个地点中的变量,可以从我的代码中的任何地方访问该变量,而无需传递参数对象。你有什么建议? 谢谢:))

2 个答案:

答案 0 :(得分:4)

我会建议Singleton模式(我知道很多人不喜欢它),但它似乎是最简单的解决方案。看看这段代码:

public enum Constants {
    INSTANCE;

    public void isInDebugMode() { 
        return true;
    }
}

以下是使用它的方法(即使是静态代码):

if(Constants.INSTANCE.isInDebugMode()) {....}

您可能还会考虑一些更复杂的解决方案:

public enum Constants {
    DEBUG(true),
    PRINT_VARS(false);

    private boolean enabled;

    private Constants(boolean enabled) {
        this.enabled = enabled;
    }

    public boolean isEnabled() {
        return enabled;
    }
}

使用示例:

if(Constants.DEBUG.isEnabled()) {....}

答案 1 :(得分:0)

最佳做法是使用静态方法,而不是变量:

public class MasterParameters {

public static boolean DebugMode(){
     return true; // change this
}
protected MasterParameters(){
    // Exists only to defeat instantiation.
}