java实现23种设计模式之策略模式

策略模式就是定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。

先定义一个统一的接口

package com.ceshi12;

public interface ICalculator {
    public int calculate(String exp);
}
package com.ceshi12;

public class AbstractCalculator {
    public int[] split(String exp,String opt){
        String array[] = exp.split(opt);
        int arrayInt[] = new int[2];
        arrayInt[0] = Integer.parseInt(array[0]);
        arrayInt[1] = Integer.parseInt(array[1]);
        return arrayInt;
    }
}

这是一个辅助类

package com.ceshi12;

public class Minus extends AbstractCalculator implements ICalculator {

    @Override
    public int calculate(String exp) {
        int arrayInt[] = split(exp,"-");
        return arrayInt[0]-arrayInt[1];
    }

}
package com.ceshi12;

public class Multiply extends AbstractCalculator implements ICalculator {

    @Override
    public int calculate(String exp) {
        int arrayInt[] = split(exp,"\*");
        return arrayInt[0]*arrayInt[1];
    }
}
package com.ceshi12;

public class Plus extends AbstractCalculator implements ICalculator {

    @Override
    public int calculate(String exp) {
        int arrayInt[] = split(exp,"\+");
        return arrayInt[0]+arrayInt[1];
    }
}

上面是运算类

package com.ceshi12;

public class StrategyTest {

    public static void main(String[] args) {
        String exp = "2+8";
        ICalculator cal = new Plus();
        int result = cal.calculate(exp);
        System.out.println(result);
    }
}

结果:

通过接口的多态实现不同的运算方法

策略模式的决定权在用户,系统本身提供不同算法的实现,新增或者删除算法,对各种算法做封装。因此,策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法即可。

原文地址:https://www.cnblogs.com/zhengyuanyuan/p/10755959.html