次の実装を検討してください
public enum Singleton {
INSTANCE;
private final OnlyOne onlyOne;
Singleton() {
onlyOne = new OnlyOne();
}
public static Singleton getInstance() {
return INSTANCE;
}
public static void main(String[] args) {
Singleton one = getInstance();
one.onlyOne.method();
}
}
class OnlyOne {
public void method() {
System.out.println("Hello World");
}
}
ここでは、を使用してシングルトンを実装しようとしましたenum
。OnlyOne
インスタンスを 1 つだけ使用したい。私の質問は、クライアントがクラスのオブジェクトをインスタンス化するのをどのように制限するのOnlyOne
ですか? 他のクラスではこれを簡単に行うことができるため
OnlyOne one = new OnlyOne();
プライベートコンストラクターを提供することはできません。これを行うとこれが壊れます
Singleton() {
onlyOne = new OnlyOne();
}
OnlyOne
クラスの内部メンバーとして列挙型を使用する必要がありますか? 助言がありますか?