gpt4 book ai didi

java - 在java中处理这个问题的首选方法是什么

转载 作者:行者123 更新时间:2023-12-02 13:25:03 24 4
gpt4 key购买 nike

假设我有以下类(class):

public interface X {
...
}

public class A implements X {
...
}

public class B implements X {
...
}

现在假设我有一个方法,它采用 X 类型的对象,并且必须以不同的方式处理 X 的每个实现。简单的方法是:

public void doSomething(X x) {
if(x instanceof A)
doSomethingA((A) x);
else if(x instanceof B)
doSomethingB((B) x);
}

...但这看起来特别难看并且不是多态的。一般来说,处理这种情况的干净方法是什么?

编辑:当然,如果我可以将 doSomething() 的实现推送到类 A 和 B,那会很容易,但是在没有意义的情况下呢?即 doSomething() 是在类 C 上定义的,并且其实现高度依赖于 C 的内部状态。

最佳答案

很简单:

public interface X {
int doSomething();
}

public class A implements X {
public int doSomething() {
// implementation in A
}
}

public class B implements X {
public int doSomething() {
// implementation in B
}

}

更新:好吧,看来我们在 C 中有一些算法,它依赖于 C 的状态以及 A/B 的差异。然后我会尝试拆分该算法,以便 C 类只有 A 和 B 的通用实现,并且依赖于 A/B 的部分应该转到适当的类,作为在 C 中调用的相同方法的特定实现.如果可能的话,C的状态可以部分传递给A和B的doSomething

关于java - 在java中处理这个问题的首选方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12706927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com