public class DBSingleton {
private static DBSingleton instance = new DBSingleton();
private DBSingleton() {
// why do we need this constructor
}
public static DBSingleton getInstance() {
return instance;
}
}
プライベートコンストラクタが私を助けることができますか?シングルトンのプライベートコンストラクタ
私はすべての変数とメソッドが静的であり、コンストラクタをpublicにしても何も変更しないことを意味します。
このクラスの中のすべてがオブジェクトではなくクラス自体に関連付けられていることを意味する静的なものなので、誰かが私のシングルトンのオブジェクトを作成するとは何も起こりません。 Java静的プロパティはすべてのオブジェクトに共有されます。
誰もがあなたのクラスをインスタンスからユーザーを防ぐために、プライベートコンストラクタを必要とする
まず、シングルトンは必ずしも静的なクラスとして実装する必要はありませんメソッド。次に、オブジェクト作成自体が重い場合(CPU /ネットワーク/ etc)、作成されたインスタンスの数を制御する必要があります(例:connection-poolなど)。 – alfasin
あなたのコンストラクタがpublicであれば誰でもそれを呼び出すことができるので、シングルトンの他のインスタンスを作成することができます。複数のインスタンスを作成することが問題ではない場合は、まずそれをシングルトンにするのはなぜですか?すべてが静的であれば、なぜ1つのインスタンスを作成するのですか? –
これはシングルトンでさえありません.'instance'は 'DBSingleton'のインスタンスを作成せずにアクセスできません。このインスタンスはコンストラクタがプライベートであるため実行できません。あなたはおそらく 'public static DBSingleton getInstance()'を意味します – Paul