我有界面
AAA
。我有两节课:
public class BBB implements AAA
public class CCC implements AAA
两个类当然都有不同的领域,将在
Service
中使用
我有服务:
public class Service() {
public DDD return Ddd(AAA aaa){
if(aaa instanceof BBB){
return method1(aaa)
}
return method2(aaa)
}
}
如何避免instanceof?在我的
Service
中,我对 BBB
和 CCC
都有共同的逻辑。 Method1
和 Method2
在此服务中使用相同的私有方法。
在这种情况下,我建议在 AAA 接口中使用一个通用方法,例如:
public interface AAA {
void method1();
}
并让两个继承类都实现这个方法。在这种情况下,您只需调用一种方法,该方法将根据确切的实例自动选择。
public class Service() {
public void ddd(AAA aaa){
aaa.method1();
}
}
...
public class Main {
public static void main(String[] args) {
AAA b = new BBB();
AAA c = new CCC();
new Service().ddd(b); // b.method1() will be called
new Service().ddd(c); // c.method1() will be called
}
}