ファミリー ( 、 、 ) に属するクラスと、ファミリー( 、、) に属するクラスFoo
がBabyFoo
ありMamaFoo
ます。各家族内で、家族のメンバーを参照するのは簡単です。たとえば、自分の子供について言及する場合、彼女は明示的に. しかし、どのファミリが要求を処理しているかを知らずに、クラスがファミリ ( 、、 )のメンバーに対してコードを実行する場合があります。PapaFoo
Bar
BabyBar
MamaBar
PapaBar
MamaFoo
BabyFoo
Lou
Baby
Mama
Papa
Lou
Javaで一般的にどちらかのファミリーのメンバーを参照するにはどうすればよいですか?
これまでの私の(貧弱な)解決策は、委任を使用することです。Lou は、2 つのファミリーのメンバーに対してコードを実行しません。代わりに、2 つのゲートウェイ クラスが からのすべての着信要求を処理しFamilyFoo
ます。FamilyBar
Lou
FamilyFoo
そしてFamilyBar
、そのファミリ内のクラスを明示的に参照します。ポリモーフィズム (との両方の親であるLou
へのデリゲート) は、ある程度のコード エコノミーが達成されることを意味しますが、このソリューションはかなりのコードの重複をもたらすため、貧弱であることが判明しました。Family reference
FamilyFoo
FamilyBar
もっと上手にできますか?