策略模式(java)——消除if els

用策略模式消除if else,其实是在使用方来指定使用,我的理解是相对当于传一个函数,类似于函数编程。

我们常见的if else 如下:

public int execute(int num1, int num2, String operator) {
        switch (operator) {
            case "*":
                return num1*num2;
            case "+":
                return num1+num2;
            default:

        }
        return 0;
    }

一、先定义策略接口

public interface Strategy {
    /**
     *
     * @param num1
     * @param num2
     * @return
     */
    public int doOperation(int num1, int num2);
}

二、定义两个实现

public class OperationMultiply implements Strategy{
    @Override
    public int doOperation(int num1, int num2) {
        return num1 * num2;
    }
}
public class OperationAdd implements Strategy{
    @Override
    public int doOperation(int num1, int num2) {
        return num1 + num2;
    }
}

三、现在的execute 

public int execute(int num1, int num2, Strategy strategy) {
        strategy.doOperation(num1,num2);
        return 0;
    }

四、谁来使用execute ,如果是一个地方,那么if else只是被转移到上层了而已,如果是多个地方,并且指定选用策略,那么就实现了消除if else。

 

你可能感兴趣的:(设计模式)