我已经被问过几次了,而我完全困惑于如何以及为什么会这样做。
这是场景:
interface IntA {
void someMethod();
}
interface IntB {
void someMethod();
}
两个简单的界面;在下面的简单类中实现
class ClassAB implements IntA,IntB {
@Override
public void someMethod(){
//some logic
}
}
然后我们可以像这样实例化和使用:
IntA a = new ClassAB();
a.someMethod();
或通过其他界面:
IntB b = new ClassAB();
b.someMethod();
现在的问题在于的实现someMethod()
,我能找出他们是使用IntA
引用还是IntB
引用来调用someMethod()
。因此,执行不同的逻辑。
老实说,我认为这是一个错误的问题。我不明白为什么以及如何做到这一点。从接口的角度来看,它具有满足功能签名标准的实现,并且至关重要。如果IntA
&IntB
预期结果不同,则应在两个不同的类中实施它们。
我已经两次遇到这种情况,所以我要问为什么。真的有办法确定吗?有其他方法可以做到C/C++
吗?
您不仅不能真正做到这一点(除了一些复杂的巫术之外),而且正如您所说的那样,甚至没有充分的理由去尝试这样做。
甚至可能出现这种情况的唯一情况是,如果您不小心将相同的方法签名赋予了两个常用的接口,并且最终可能在同一类中一起实现,但具有不同的功能。但这是接口方面的设计错误。
周围没有干净的方法,甚至不干净的方法也是如此复杂,以至于没有任何头脑正确的人会尝试它。正确的做法是重构接口之一以使用不同的方法签名。如果这种情况已经出现两次,也可能是更大的设计问题的征兆。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句