关于实现接口的代码冗余问题
现有一个类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有类似的办法吗?
现有一个类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有类似的办法吗?
...全文
相关推荐
C#编程实践:从继承与接口实现中提炼抽象类
本文基于《Programming in C# with Microsoft® Visual Studio® 2010》书籍内容,详细探讨了在C#中如何通过继承和接口实现来提炼出抽象类。文章通过具体的编程实践,展示了如何将具有共同功能的类中的重复代码抽象出来,以减少代码冗余,提高代码复用性,并通过实例演示了如何使用抽象类来优化代码结构。
全球检查台纸市场稳健增长:高频诊疗需求、产品升级与医疗供应链新机会.docx
全球检查台纸市场稳健增长:高频诊疗需求、产品升级与医疗供应链新机会
超音速扩散器空气动力学优化的MATLAB代码.zip
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
数字化转型最后一公里:AI如何打通企业技术需求对接瓶颈.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
guang告通系统源码包 霸屏系统源码带教学有演示
只需要有对方vx号或者电话号 即可完成精准投放任务到对方朋友圈视频号公众号小程序 以及腾讯旗下所有应用所有广gao位中霸屏展示反复触达客户意向不浪费一点宝光 演示站:https://ad.jitutu.cn/ 演示账号:18877777777 密码:244466666


