设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 策略模式(Strategy)
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
一、说明:
1、Calculator 策略(接口);
2、AbstractCalculator 策略辅助函数(抽象类);
3、Plus 加法策略.实现类;
4、Minus 减法策略.实现类。
二、Java实现,代码如下:
1、Calculator
package com.java.designPattern.strategy;
/**
* 策略 - 接口
*
*/
public interface Calculator {
public Integer calculate(String exp);
}
2、AbstractCalculator
package com.java.designPattern.strategy;
/**
* 策略辅助函数 - 抽象类
*
*/
public abstract class AbstractCalculator {
/**
* 将表达式分解为Integer[
* @param exp 表达式
* @param opt 分隔符
* @return Integer[]
*/
public Integer[] split(String exp, String opt) {
String[] array = exp.split(opt);
Integer[] arrayInt = new Integer[2];
arrayInt[0] = Integer.parseInt(array[0]);
arrayInt[1] = Integer.parseInt(array[1]);
return arrayInt;
}
}
3、Plus
package com.java.designPattern.strategy;
/**
* 加法策略 - 实现类
*
*/
public class Plus extends AbstractCalculator implements Calculator {
@Override
public Integer calculate(String exp) {
Integer[] arrayInt = split(exp, "\\+");
return arrayInt[0] + arrayInt[1];
}
}
4、Minus
package com.java.designPattern.strategy;
/**
* 减法策略 - 实现类
*
*/
public class Minus extends AbstractCalculator implements Calculator {
@Override
public Integer calculate(String exp) {
Integer[] arrayInt = split(exp, "-");
return arrayInt[0] - arrayInt[1];
}
}
5、Test
package com.java.designPattern.strategy;
/**
* 测试类
*
*/
public class Test {
public static void main(String[] args) {
Calculator plus = new Plus();
String plusExp = "1+2";
Integer plusResult = plus.calculate(plusExp);
System.out.println(plusExp + " = " + plusResult);
Calculator minus = new Minus();
String minusExp = "3-2";
Integer minusResult = minus.calculate(minusExp);
System.out.println(minusExp + " = " + minusResult);
}
}
输出:
1+2 = 3
3-2 = 1