我需要将.properties文件中的应用程序属性读取到应该作为应用程序属性的单个点的类。对于这样的类,推荐的方法是什么:将这些属性定义为静态变量或将实例变量定义为单例模式?
我的格式为 key = value 的myapp.properties
文件。假设此文件中定义了2个应用程序属性:
公司= ABC
BATCHSIZE = 1000
在应用程序启动时,我将把这个文件读入类ApplicationProperties
。每当我需要使用应用程序属性时,我将使用此类。
我有两个选择:
选项1:将应用程序属性定义为静态变量:
public class ApplicationProperties {
private static String COMPANY;
private static int BATCH_SIZE;
static {
// read myapp.properties file and populate static variables COMPANY & BATCH_SIZE
}
private ApplicationProperties() {}
public static String getCompany() {
return COMPANY;
}
public static int getBatchSize() {
return BATCH_SIZE;
}
}
选项2:将应用程序属性定义为实例变量:
public class ApplicationProperties {
private static ApplicationProperties INSTANCE = new ApplicationProperties();
private String company;
private int batchSize;
private ApplicationProperties() {
// read myapp.properties file and populate instance variables company & batchSize
}
public static ApplicationProperties getInstance() {
return INSTANCE;
}
public String getCompany() {
return this.company;
}
public int getBatchSize() {
return this.batchSize;
}
}
对于选项1,我将以这种方式访问:
ApplicationProperties.getCompany();
ApplicationProperties.getBatchSize();
对于选项2,我将以这种方式访问:
ApplicationProperties.getInstance().getCompany();
ApplicationProperties.getInstance().getBatchSize();
哪个更好?为什么?
如果此问题已经回答,请指出答案。
由于
答案 0 :(得分:1)
选项2稍微复杂和冗长而没有任何优势,因此选项1是更好的设计。
恕我直言,这不是"基于意见的"。