通常、シングルトンパターンは避けられますが、ここからすべてのプロパティにアクセスすることができます。また、それだけで不変の状態を持つことになりますので、私はここにシングルトンを使用しても大丈夫だと思います:
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);
}
}
ここでは、インスタンスが起動時に作成されることに注意してください、それが最初に必要になったときにも遅延し、それを作成することができますしてください。ここでの利点は、プロパティファイルが見つからない場合に起動時に通知されることです。
また、特定の必須プロパティが含まれているかどうかをチェックし、それ以外の場合はエラーをスローしてプロパティにいくつかのゲッターを提供するためにこれを拡張できます。 (1)複数回ファイルを読む必要がないのはなぜ
public final class MyProperties {
public static final String USERNAME;
// More fields
static {
// Load your properties here and set the fields accordingly
}
private MyProperties() {}
}
:
代わりに、あなたはまた、ちょうどそのような静的初期化子で初期化されているパブリック静的フィールドを持っているだろうか? – Thilo
私はそのようなファイルをいくつか持っています...私はそれを公開変数にすることができると思います。それはあなたが示唆していることですか? – theyuv
アプリケーション全体で多くのクラスからアクセスする必要がある設定値がある場合は、すばやくパブリックゲッターまたはフィールドとして提供することです。 – Thilo