0

ファミリー ( 、 、 ) に属するクラスと、ファミリー( 、、) に属するクラスFooBabyFooありMamaFooます。各家族内で、家族のメンバーを参照するのは簡単です。たとえば、自分の子供について言及する場合、彼女は明示的に. しかし、どのファミリが要求を処理しているかを知らずに、クラスがファミリ ( 、、 )のメンバーに対してコードを実行する場合があります。PapaFooBarBabyBarMamaBarPapaBarMamaFooBabyFooLouBabyMamaPapa

LouJavaで一般的にどちらかのファミリーのメンバーを参照するにはどうすればよいですか?

これまでの私の(貧弱な)解決策は、委任を使用することです。Lou は、2 つのファミリーのメンバーに対してコードを実行しません。代わりに、2 つのゲートウェイ クラスが からのすべての着信要求を処理しFamilyFooます。FamilyBarLou

FamilyFooそしてFamilyBar、そのファミリ内のクラスを明示的に参照します。ポリモーフィズム (との両方の親であるLouへのデリゲート) は、ある程度のコード エコノミーが達成されることを意味しますが、このソリューションはかなりのコードの重複をもたらすため、貧弱であることが判明しました。Family referenceFamilyFooFamilyBar

もっと上手にできますか?

4

1 に答える 1

0

すべてのサブタイプで同じ操作になる場合は、Bar と Foo が実装できるインターフェイスを使用する必要があります。

代わりに、理にかなっている場合は、Bar と Foo の両方が拡張できるスーパー クラスを作成できます。あなたの説明からは、どちらが優れているかわかりません。もっと情報が必要です。

EDIT : 家族を表す 、Baby<T>などMama<T>の一般的な家族メンバーを使用できます。Papa<T>T

于 2013-01-18T00:21:05.050 に答える