0

我有属于家庭的班级Foo( BabyFoo, MamaFoo, PapaFoo) 以及属于家庭的班级Bar( BabyBar, MamaBar, PapaBar)。在每个家庭中,很容易提及家庭成员。例如,当MamaFoo指代她自己的孩子时,她明确指代BabyFoo。但是在某些情况下,类在一个家族( , , )Lou的成员上运行代码而不知道哪个家族正在处理请求。BabyMamaPapa

如何Lou在 Java 中泛指任一家族的成员?

到目前为止,我的(糟糕的)解决方案是使用委托。Lou 不会对这两个家庭的成员运行代码。取而代之的是两个网关类FamilyFooFamilyBar处理来自Lou.

FamilyFooFamilyBar反过来又明确地提到了他们家庭中的阶级。这个解决方案结果很差,因为它会导致大量的代码重复,即使多态性(Lou委托给 a Family reference,两者的父级FamilyFooand FamilyBar)意味着实现了一些代码经济性。

你能做得更好吗?

4

1 回答 1

0

如果要对所有子类型进行相同的操作,您应该使用 Bar 和 Foo 可以实现的接口。

相反,如果有意义,您可以创建一个 Bar 和 Foo 都可以扩展的超类。根据您的解释,我无法确定哪个更好。我需要更多信息。

编辑:您可以使用代表家庭的通用家庭成员,例如Baby<T>, 。Mama<T>Papa<T>T

于 2013-01-18T00:21:05.050 回答