前言
今天继续学习了Java的设计模式,其中我想记录一下策略模式,我不由的联想到Java中的List,我觉得可能就是用策略模式实现的
一、策略模式是什么?
定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数
二、使用步骤
1.统一接口
代码如下(示例):
public interface ICalculator {
public int calculate(String exp);
}
2.定义辅助类
代码如下(示例):
public 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;
}
}
这个辅助类用作模板,计算都是两个数字和一个运算符,运算有不同的策略,如加减乘除
3.定义实现类
public class Plus extends AbstractCalculator implements ICalculator {
@Override
public int calculate(String exp) {
int arrayInt[] = split(exp,"\\+");
return arrayInt[0]+arrayInt[1];
}
}
public class Minus extends AbstractCalculator implements ICalculator {
@Override
public int calculate(String exp) {
int arrayInt[] = split(exp,"-");
return arrayInt[0]-arrayInt[1];
}
}
public class Multiply extends AbstractCalculator implements ICalculator {
@Override
public int calculate(String exp) {
int arrayInt[] = split(exp,"\\*");
return arrayInt[0]*arrayInt[1];
}
}
这样就用策略模式实现了三种计算策略
总结
上述代码部分来自:https://blog.csdn.net/sugar_no1/article/details/88317950
我对策略模式有了更深入的了解,对于马上要做的软构实验有一定帮助