[英]What design pattern should be used for a global configuration
我一直在读,在一个从未实例化的类中使用静态变量是一个坏主意,因为当类不再存在于内存中时,变量可能会变为null。 说得通。
这就是我一直在做的一个例子
public class MasterParameters {
public static boolean DEBUG_MODE = true;
protected MasterParameters(){
// Exists only to defeat instantiation.
}
}
我也听说使用Singleton同样糟糕,人们建议使用“依赖注入” - 但这对于我需要的东西来说似乎很复杂和过度。 我只是不看正确的例子吗?
我想要一个简单的方法在一个位置定义一个变量,可以从我的代码中的任何地方访问,而不必传递参数对象。 你有什么建议? 谢谢 :)
我会建议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()) {....}
最佳做法是使用静态方法,而不是变量:
public class MasterParameters {
public static boolean DebugMode(){
return true; // change this
}
protected MasterParameters(){
// Exists only to defeat instantiation.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.