我有2個替代方案來實現一個計算方法,我想知道什麼是更好的方法。Java方法過載
該方法需要一些int和double參數和(在某些情況下)一個特殊的標誌來做一些不同的計算。
在第一個示例中,我可以使用'calculateFoo(1,2.0d)'調用具有布爾標誌== FALSE的方法。
在第二個例子中,我總是要設置布爾標誌(即使我並不需要它)
方法1:(這裏我使用「...」作爲「方法的重載'參數)
public SomeObject calculateFoo(int pIntValue, double pDoubleValue, boolean... pDoSpecialStuff) {
if (pDoSpecialStuff.length == 0 || pDoSpecialStuff[0] == false) {
// method was called without boolean flag or boolean flag was set to FALSE
// do some calculation stuff
// ...
} else {
// method was called with boolean flag == TRUE
// do some other calculation stuff
// ...
}
return SomeObject;
}
方法2:(這是 '共同' 的做法)
public SomeObject calculateFoo(int pIntValue, double pDoubleValue, boolean pDoSpecialStuff) {
if (pDoSpecialStuff == false) {
// method was called with boolean flag == FALSE
// do some calculation stuff
// ...
} else {
// method was called with boolean flag == TRUE
// do some other calculation stuff
// ...
}
return SomeObject;
}
而不是使用標誌來確定「做什麼」,你也可以有多種方法 - 一個方法 - 一個動作。這是面向對象的方法。旗幟通常很醜。 –