记录一下自己学习过程的点点滴滴。
所谓策略模式,便是在一个类的内部先制定好不同的策略,然后跟据调用类的需要,来选择正确的策略。
下面举一个相关例子
interface Caculator
{
public String caculate(String expr);
}
class MyCaculator implements Caculator
{
@Override
public String caculate(String expr)
{
return split(expr);
}
/**
* 分割字符串,然后选择运算策略
*/
private String split(String expr)
{
String[] operats = expr.split("\\D");
String result = null;
if(-1 != expr.indexOf('+'))
{
result = plus(operats);
}
else if(-1 != expr.indexOf('-'))
{
result = subtra(operats);
}
return result;
}
/**
* 加法运算
*/
private String plus(String[] operats)
{
int value = Integer.parseInt(operats[0]) + Integer.parseInt(operats[1]);
return String.valueOf(value);
}
/**
* 减法运算
*/
private String subtra(String[] operats)
{
int value = Integer.parseInt(operats[0]) - Integer.parseInt(operats[1]);
return String.valueOf(value);
}
}
public class Test
{
public static void main(String[] args)
{
Caculator caculator = new MyCaculator();
System.out.println("10+5="+caculator.caculate("10+5"));
System.out.println("10-5="+caculator.caculate("10-5"));
}
}
屏幕打印结果
10+5=15
10-5=5
可以看到,在输入10+5和10-5两个不同表达式时,程序会自动选择加法和减法两种运算策略,这便是策略模式了。