有库类B和C,都继承自A类。我有2个类扩展B& C,即MyB& MYC的。
A
/ \
B C
/ \
MyB MyC
MyB
& MyC
分享了许多常用代码,它们只是略有不同。
我想摆脱重复的代码,我怎么能在java中做到这一点?在C ++中,可以通过创建一个公共基类并将其中常见的所有内容放入其中,如下所示:
A
/ \
B C
\ /
MyBase
/ \
MyB MyC
答案 0 :(得分:25)
您可以使用composition:
答案 1 :(得分:3)
不要在这些类中拥有所有逻辑,而是在类D
中拥有所有通用逻辑。现在,使MyC
和MyB
每个都有一个D
实例的成员。这叫做composition。
答案 2 :(得分:1)
一个类只能从一个类扩展。但是,您可以实现多个接口。
答案 3 :(得分:1)
在Java中,您将使用以下内容:
在B
中封装C
和MyBase
“的实例的组合(模式)。
重构B
和C
(如有必要)公开单独的界面,例如IB
和IC
MyBase
实现多个接口:IB
和IC
,通过“做正确的事”将接口上的方法映射到内部B
和{{ 1}}实例。
C
和MyB
实施适当的界面,并将调用映射到MyC
。