如何解决:几个ifs或多或少相同的代码?

时间:2012-05-02 10:20:14

标签: design-patterns if-statement method-call

我有这段代码:

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 个答案:

答案 0 :(得分: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, ...); 

如果没有,这将提高代码的可读性。

显然,这是假设完全(并且最多)满足其中一个条件

答案 1 :(得分:0)

Strategy pattern是您需要使用的。决策将在战略对象中做出,你只需逐个调用它们,直到其中一个回复为止。