我需要一个需要不同参数的方法,并根据参数表现不同,如下例所示:
public void doSomething(A a, B b, C c) {
doSomeGeneralStuff();
if a.isPresent() {
doSomethingWithA();
}
if b.isPresent() {
doSomethingWithB();
}
if c.isPresent() {
doSomethingWithC();
}
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是:
public void doSomething(A a) {
doSomeGeneralStuff();
doSomethingWithA();
}
public void doSomething(B b) {
doSomeGeneralStuff();
doSomethingWithB();
}
public void doSomething(C c) {
doSomeGeneralStuff();
doSomethingWithC();
}
Run Code Online (Sandbox Code Playgroud)
但是在第二个例子中我会有一堆冗余代码,这就是为什么我仍然不满意.还有哪些其他模式处理这个问题?
您可以使用继承.有一个共同的界面,所有A,B和C.
public void doSomething(Common abc) {
doSomeGeneralStuff();
abc.doSomethingWithABC();
}
interface Common {
void doSomethingWithABC();
}
class A implements Common {
class B implements Common {
class C implements Common {
Run Code Online (Sandbox Code Playgroud)