私は面白いアイデアを思いついたことがあります(どのコードにも含めることはできませんが、考えるのは楽しいです)はJavaの階層構造である可能性がありますか?
多くのクラスを必要とするプログラム特定のサブクラスのこれらのクラスはすべてシングルトンである必要があります。さて、これらのクラスごとにシングルトンパターンを書くことはできますが、同じコードを何度も繰り返し書くことは無駄です。すでに共通の基底クラスがあります。これは、サブクラスから呼び出された場合、Bクラスのシングルトンを返すことをAのgetSingletonメソッドを作成するために、本当にいいだろう(簡単にするためにクラスAにキャスト)
class A{
public A getSingleton(){
//Wizardry
}
}
class B extends A{
}
A blargh = B.getSingleton()
A gish = B.getSingleton()
if(A == B)
System.out.println("It works!")
仕方がするように私には思えますこれは、Bのデフォルトのコンストラクタを認識して呼び出すことです(何かを渡す必要はないと仮定します)。私はJavaでの反射の黒い魔法を少し知っていますが、これができるかどうかはわかりません。
これ以上困惑する人は誰ですか?
あなたはめったに本物のシングルトンを必要としません。かなりのアプリケーションでは、アプリケーションのライフサイクル中にインスタンスを1つしか持たないオブジェクトが必要な場合があります。しかし、ユニットテストを複雑にする(または防ぐ)ために、シングルトンを使うべきではないでしょう。あなたが望むものは、シングルトンに近いものですが、厳密にはそうではありません。 Springのようなフレームワークはそのような場合に役立ちます。 – SyntaxT3rr0r
@Chris S. - あなたのコメントは私の答えとどう違うのですか?私たちは両方とも、シングルトンが答えではないことを示唆しています。だから、なぜ私は「助けていない」と言っているのですか? – duffymo