A接口实现类中a方法调用了c方法,B接口的实现类b方法也需调用A接口的实现类中的c方法,在java中如何实现?
1.情景展示
在实际开发过程中,往往会存在这样的情况:
在A接口的实现类a方法实现了某个功能,现在B接口的实现类b方法也需要实现此功能,两者大致相同。
为了提高代码的复用性,我们可以把A接口的实现类a方法的具体实现过程进行封装成c方法,供A、B两个接口的实现类调用。
2.具体分析
第一步:将共用的代码提取出来并封装成方法。
同类调用
第二步:由于该方法和调用方a方法在同一个实现类,所以直接调用即可。
接口调用
第一步:在B接口实现类中注入A接口的实现类。
用的是构造注入。
第二步:引用A接口实现类的c方法。
这时,你将发现无法直接调用。
怎么办?
3.解决方案
将A接口实现类的c方法变成A接口的方法。
这样就不再报错了。
说明:
在A接口的实现类中,a方法调用了c方法,属于内部调用:方法调方法。
而在B接口的实现类中,b方法调用了c方法,属于外部调用:B接口的b方法调A接口的c方法,是接口间的调用。
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/18067991