定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
比如计算器针对两个数可以有加减乘除等策略。
UML如下:
public interface Caculate{
public int cacl(int a,int b);
}
定义策略类
public class Add implements Caculate{
@Override
public int cacl(int a, int b) {
return a + b;
}
}
public class Reduce implements Caculate {
@Override
public int cacl(int a, int b) {
return a - b;
}
}
public class Context {
private Caculate c;
public Context(Caculate c) {
this.c = c;
}
public int getResult(int a,int b) {
return c.cacl(a, b);
}
}
public class Test {
public static void main(String[] args) {
Context c = new Context(new Add());
System.out.println(c.getResult(5, 6));
}
}