Java では、シングルトンとすべての静的メンバーを持つクラスのどちらを使用するのがよいでしょうか? それとも関係ありませんか?
たとえば、X
さまざまなクラスからクラスにアクセスしたいのですが、そのX
クラスには、それを使用するすべてのクラスに対して同様の値が含まれている必要があります。
Java では、シングルトンとすべての静的メンバーを持つクラスのどちらを使用するのがよいでしょうか? それとも関係ありませんか?
たとえば、X
さまざまなクラスからクラスにアクセスしたいのですが、そのX
クラスには、それを使用するすべてのクラスに対して同様の値が含まれている必要があります。
Math
またはクラスと同じようにステートレスなクラスの静的メソッドとSystem
、その逆のシングルトンを好みます-> のようなステートフル クラスの場合FacesContext
。
すべて静的なクラスは、論理的にグループ化されているが、状態 (フィールド) を共有していない共有ユーティリティ メソッドによく使用されます。
次の場合は、シングルトンの方が適しています。
ActionListener
)(別の言い方をすると、ポリモーフィズムが必要な場合、シングルトンはクラスではなくオブジェクトでなければなりません)
継承不可かつインスタンス化不可の静的メソッドを持つクラスが望ましいです。例えば:
public final class Constants {
private Constants() {
// non-public constructor
}
public static final Pattern ID_PATTERN = Pattern.compile("^\\d{4,10}$");
public static final Locale DEFAULT_LOCALE = new Locale("en", "US");
...
}
アプリケーション スコープと同様に、何らかの状態を維持したい場合にのみシングルトンを使用してください。ただし、きれいなデザインが必要な場合は、2 つのクラスにする必要があります。