如何避免instanceof

问题描述 投票:0回答:1

我有界面

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
在此服务中使用相同的私有方法。

java instanceof
1个回答
0
投票

在这种情况下,我建议在 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
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.