2012-05-02 71 views
1

我有這樣的代碼:如何解決:幾個具有或多或少相同代碼的ifs?

if(condition 1) { 
    if(condition X) { 
     myMethod(..., paramx, ...); 
    } 

    if(condition Y) { 
     myMethod(..., paramy, ...); 
    } 
} 

if(condition 2) { 
    if(condition A) { 
     myMethod(..., parama, ...); 
    } 

    if(condition B) { 
     myMethod(..., paramb, ...); 
    } 
} 
... 

等。正如你看到的,根據條件,我只用一個不同的參數調用相同的方法。什麼是一個優雅的方式來解決這個問題?

謝謝!

回答

2
if(condition 1){ 
    if(condition X){ 
     dependentVar = paramx; 
    } 

    if(condition Y){ 
     dependentVar = paramy; 
    } 
} 

if(condition 2){ 
    if(condition A){ 
     dependentVar = parama; 
    } 

    if(condition B){ 
     dependentVar = paramb; 
    } 
} 

... 最後:

myMethod(..., dependentVar, ...); 

如果沒有,這將提高代碼的可讀性。

顯然,這是假設正好(和最多)的一個條件得到滿足

+0

我覺得他們不是平等的解決方案:)在問題中,會有0-4個方法調用取決於條件。但在這一個中,任何情況下都會有一個方法調用。 – Kleenestar

+0

在你指定的約束條件下,是的,它們不是等價的。這是一個更清晰的解決方案,假設我已經在答案中陳述了。 – axiom

0

Strategy pattern是你需要使用的東西。決策將在策略對象中完成,你只需要逐個調用它們,直到其中一個響應正面。

相關問題