我有一个属于家庭Foo
(BabyFoo
,MamaFoo
,PapaFoo
)的课程以及属于该家庭Bar
的课程({{ 1}},BabyBar
,MamaBar
)。在每个家庭中,很容易引用家庭成员。例如,当PapaBar
引用自己的孩子时,她明确提到MamaFoo
。但有些情况下,类BabyFoo
在一个系列的成员(Lou
,Baby
,Mama
)上运行代码而不知道哪个系列正在处理该请求。
Papa
如何将Java一般性地引用给任何一个家庭成员?
到目前为止我的(差)解决方案是使用委托。 Lou没有对这两个家庭的成员运行代码。相反,两个网关类Lou
和FamilyFoo
处理来自FamilyBar
的所有传入请求。
Lou
和FamilyFoo
反过来明确提及其家庭中的课程。这个解决方案结果很差,因为它导致相当多的代码重复,即使多态性(FamilyBar
委托给Lou
,Family reference
和FamilyFoo
的父代表示意味着一些代码经济实现了。
你能做得更好吗?
答案 0 :(得分:0)
你应该使用Bar和Foo可以实现的接口,如果它对所有子类型都是相同的操作。
相反,如果它有意义,你可以创建一个Bar和Foo都可以扩展的超类。根据你的解释,我无法确定哪个更好。我需要更多信息。
编辑:您可以使用Baby<T>
,Mama<T>
,Papa<T>
这样的通用家庭成员,T
代表该家庭。