策略模式定义了一系列的算法,将每一个算法封装到具有共同接口的实现类中,并且使他们可以互为替换。策略模式主要有三个角色组成。
1)抽象策略角色:策略类,通常由一个接口或者抽象类实现。
2)具体策略角色:包装了相关的算法和行为
3)环境角色:持有策略类的引用
下面引入大话设计模式中的加减乘除例子来具体讲解:
抽象策略角色:
public interface Operation{
public void op(double a , double b);
}
具体策略角色:
public class Add implements Operation{
public void op(double a, double b){
double result = a + b;
System.out.println(result);
}
}
public class Sub implements Operation{
public void op(double a, double b){
double result = a - b;
System.out.println(result);
}
}
public class div implements Operation{
public void op(double a, double b){
double result = a / b;
System.out.println(result);
}
}
public class Multi implements Operation{
public void op(double a, double b){
double result = a * b;
System.out.println(result);
}
}
环境角色:public class Environment{
public final static Add add = new Add();
public final static Sub add = new Sub();
public final static Div add = new Div();
public final static Multi add = new Multi();
}
测试类:
public class Test{
public static void main(String[] args){
Environment e = new Environment();
e.Add.op(22,11);
e.Sub.op(22,11);
e.Div.op(22,11);
e.Multi.op(22,11);
}
}