質問はそれをすべて言っています。 シングルトンパターン(そのクラスの最後にある)は解決策です。これを達成する他の方法がありますか?クラスを抽象化すると、インスタンス化できません。それを最終的にすることは継承不可能にします。 両方をどのように組み合わせますか?Javaでインスタンス化不可能で非継承クラスを構築する方法
public final class SingletonObject
{
private SingletonObject()
{
// no code req'd
}
/*public static SingletonObject getSingletonObject()
{
if (ref == null)
// it's ok, we can call this constructor
ref = new SingletonObject();
return ref;
}*/
public Object clone()
throws CloneNotSupportedException
{
throw new CloneNotSupportedException();
// that'll teach 'em
}
private static SingletonObject ref;
}
コード参考:
public final class Useless {
private Useless() {}
}
プライベートコンストラクタは、通常のオブジェクト指向のソリューションです:http://www.javacoffeebreak.com/articles/designpatterns/index.html
ちょうど '.getSingletonObject()'を定義しないでください... – fge
クラスをインスタンス化することはできませんが、それは役に立たないのですか? – kosa
クラスに静的ユーティリティメソッドしかない場合に便利です。共通のイディオムは、クラスを最終的にすること、および/またはプライベートコンストラクタを定義することです。なぜこれは動作するので、別のイディオムを使うのですか? –