Java Multiple inheritance, get rid of duplicate code
有库类B和C,都继承自类A。我有两个扩展B&C的类,即MyB&MyC。
1 2 3 4 5
| A
/ \
B C
/ \
MyB MyC |
MyB和MyC共享许多公共代码,它们只是略有不同。
我想去掉重复的代码,我怎样才能在Java中做到这一点呢?在C++中,可以创建一个公共基类,并把它中常见的东西放在下面:
1 2 3 4 5 6 7
| A
/ \
B C
\ /
MyBase
/ \
MyB MyC |
- 查看:stackoverflow.com/questions/17226364/…
你可以用作文:
- 用公共代码创建一个新的类mycommon
- 在myb和myc中添加一个mycommon实例,并将工作委托给mycommon。
- 盖赫打败了我。:)
- 打败我。+ 1。
- 打败所有人…;-)
- +1、好东西。这是一篇有帮助的文章,可以很好地包含在答案中:javaworld.com/javaworld/jw-10-2005/jw-1024-multiple.html
- 哇,这是第一次,我在回答问题的不到一分钟内就看到了+10次重复
- 这篇文章是我打开灯泡的原因…
不要将所有逻辑都包含在这些类中,而是在类D中拥有所有公共逻辑。现在,让MyC和MyB各自拥有一个属于D实例的成员。那叫做合成。
在爪哇,你会用到一些东西:
将B和C的实例封装在"MyBase中的复合(模式)。
重构B和C(如有必要)以公开单独的接口,如IB和IC。
MyBase实现多个接口:IB和IC,通过"做正确的事情"将接口上的方法映射到内部B和C实例。
MyB和MyC实现适当的接口,并将调用映射到MyBase。
类只能从一个类扩展。但是,您可以实现多个接口。