版权声明:本文为博主原创文章,未经博主允许不得转载。个人公众号:百草疯茂 https://blog.csdn.net/wang_pengyu/article/details/84925884
package com.test.DPs.XingWei.Strategy;
/**
* 行为型:Strategy-策略 外观:作用面为 对象
*/
interface ICalculator{ int calculate(String exp);}
abstract 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;
}
}
class Plus extends AbstractCalculator implements ICalculator{
@Override
public int calculate(String exp){
int arrayInt[] = split(exp,"\\+");
return arrayInt[0]+arrayInt[1];
}
}
class Minus extends AbstractCalculator implements ICalculator{
@Override
public int calculate(String exp){
int arrayInt[] = split(exp, "-");
return arrayInt[0] - arrayInt[1];
}
}
/**
* 用途:定义一系列算法,并依次封装,使之可相互替换。使得算法变化独立于客户。
*
* 理解:需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口。
* 设计一个抽象类(可有可无,属于辅助类),提供辅助函数。
* 算法的选择权在于外部客户。
*/
public class Strategy{
public static void main(String[] args){
String exp = "2+8";
ICalculator cal = new Plus();
System.out.println(cal.calculate(exp));
}
}