我创建了SomeConfig
来存储静态数据。然而,我试图理解女巫选择更好(或两者都没有)
在我上课SomeConfig
之前写成:
public class SomeConfig {
private static int mValue = 8;
private static String mString = "some String";
public static int getValue() {
return mValue;
}
public static void setValue(int value) {
mValue = value;
}
public static String getTheString() {
return mString;
}
public static void setValue(String theString) {
mString = theString;
}
}
现在我将其更改为:
public class SomeConfig {
private static SomeConfig mSomeConfig = new SomeConfig();
private int mValue = 8;
private String mString = "some String";
public static int getValue() {
return mSomeConfig.mValue;
}
public static void setValue(int value) {
mSomeConfig.mValue = value;
}
public static String getTheString() {
return mSomeConfig.mString;
}
public static void setValue(String theString) {
mSomeConfig.mString = theString;
}
}
通常我将私有变量更改为非静态变量,但API保持不变。
我发布的两个选项之间有什么区别?
谢谢,
答案 0 :(得分:1)
如果您只想在应用程序中存在SomeConfig的一个实例,那么您可能希望将其设为Singleton类。请参阅此链接:link
您的第二个选项似乎最接近Singleton,您只需要将Default构造函数设为Private,以确保没有其他类可以创建SomeConfig的另一个实例。
答案 1 :(得分:1)
根据我的理解,静态变量是类变量,并且不需要任何对象来调用或赋值。这些静态变量的值在类中保持相同。一旦分配了值,所有对象都可以访问该值
希望它会对你有所帮助。
答案 2 :(得分:1)
一般来说,我认为避免使用静态变量和方法是一种很好的做法,除非确实需要(我猜静态的常用是“实用”类型方法,或常量等)。如果您不想多次实例化该类,或者想要确保配置的单个实例,我认为将其实现为单例将是更好的方法。
答案 3 :(得分:0)
我不建议将这两者中的任何一个用于配置目的。
这两者之间的区别只是一个使用实例来保存值,另一个使用静态变量。
您可能会考虑使用一个配置类,在初始化期间使用ResourceBundle
从.properties文件加载值。