设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 策略模式(Strategy) - Java实现

时间:2022-11-11 21:58:49

设计模式(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