策略模式是一个行为模式,把功能单独分离出来供你选择,有两个数可以进行加减乘数,具体选择哪个,就是客户端的事。好像是有很多功能供你选择,动态的变化行为,这点很想命令行模式。
功能接口Operation:
public interface Operation {
void op(int a, int b);
}
具体功能实现类:提供了不同的功能处理类
public class Add implements Operation{
@Override
public void op(int a, int b) {
int c = a + b;
System.out.println("a+b = " +c);
}
}
public class Sub implements Operation{
@Override
public void op(int a, int b) {
int c = a - b;
System.out.println("a-b=" + c);
}
}
功能选择类,具有一个主动的设置器set方法,动态的去选择方法(加减):
public class Admin {
Operation operation;
public void setOperation(Operation operation) {
this.operation = operation;
}
public void AB(int a, int b) {
operation.op(a, b);
}
}
测试:
class Test {
public static void main(String[] args) {
Add add = new Add();
Sub sub = new Sub();
Admin admin = new Admin();
admin.setOperation(add);
admin.AB(10, 5);
admin.setOperation(sub);
admin.AB(10, 5);
}
}
结果:
a+b = 15
a-b=5