虽然通常可以避免使用Singleton模式,但您可以在此处使用它来访问各处的属性。它也将有唯一不变的状态,所以我觉得它是确定在这里使用一个单身:
public final class MyProperties {
private final Properties properties;
private MyProperties(){
properties = new Properties();
properties.load(...); // Load your properties here and maybe do some checks
}
public static final MyProperties INSTANCE = new MyProperties();
// Or add some fields/getters instead
public String getProp(String key){
return properties.getProperty(key);
}
}
请注意,这里的实例在启动时创建的,但你也可以懒洋洋地创造它首先需要时。这样做的好处是,如果无法找到属性文件,您将在启动时收到通知。
此外,您可以扩展此检查是否包含某些必需的属性,否则抛出一个错误,并为属性提供一些getter。
另外,您也可以只具有被初始化在那样的静态初始化公共静态字段:
public final class MyProperties {
public static final String USERNAME;
// More fields
static {
// Load your properties here and set the fields accordingly
}
private MyProperties() {}
}
为什么(1)需要读取文件不止一次? – Thilo
我有几个这样的文件...我想我可以使它成为一个公共变量。这是你的建议吗? – theyuv
如果你的配置值需要在整个应用程序中从很多类访问,那么是的,一个快速的方法是将它们作为公共获取者或字段提供。 – Thilo