关于实现接口的代码冗余问题

wglxxx 2014-12-13 03:51:41
现有一个类CA,及其100个子类CA1~CA100,每个类的规模一般千行级别
现有一个类CB,及其100个子类CB1~CB100,每个类的规模一般千行级别

由于需要为CA50~CA100以及CB50~CB100增加同样的10个功能,这些功能对CA,CB其他子类没有意义,
而且这10个功能已经由10个类CE1~CE10实现了,于是将CE1~CE10提取接口I1~I10,并让CA50~CA100以及CB50~CB100
增加实现该接口,即(CB50~CB100同样)
CA50~CA100 implements I1~I10 {
private CE1~CE10;
I1.M1(){
CE1.M1();
}
。。。
}

问题1:上面方法造成CA50~CA100以及CB50~CB100每个类增加完全相同的数百行代码(不包括注释),共数万行
问题2:由于CE1~CE10功能修改,不得不增减接口I1~I10的方法,导致CA50~CA100以及CB50~CB100也必须重新修改一遍

有没有较为简单的方法或自动化工具解决上面两个问题?
.net好像有implements关键字,能通过将接口的实现委托给类成员而完美解决上述问题,java有类似的办法吗?
...全文
197 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangyanggoods 2014-12-15
  • 打赏
  • 举报
回复
jdk1.8欢迎您。1.8里接口也可以实现方法了哦…… 对于其他版本,我的想法是这样的: 如果方法内容是完全相同的,对于CE1.M1(arg0, arg1, ...)这样的方法,可以在CE1里增加一个静态方法static CE1.M1( I1 arg, arg0, arg1, ...),而接口I1内不声明任何方法,仅用于说明其实现类可以有CE1功能 又或者,声明一个抽象类CAA,继承CA并实现M1~M10方法,然后让CA50~CA100继承CAA 个人感觉后一种方法可能更好一些

51,407

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧