策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
public class Context{
private Stragety mStragety;
public void setStragety(Stragety mStragety){
this.mStragety=mStragety;
}
public void algorithm(){
mStragety.algorithm();
}
public static void main(String[] args){
Context context=new Context();
context.setStragety(new ConcreteStragetyA());
context.algorithm();
context.setStragety(new ConcreteStragetyB());
context.algorithm();
}
}
public interface Stragety{
void algorithm();
}
public ConcreteStragetyA implements Stragety{
public void algorithm(){
System.out.println("ConcreteStragetyA");
}
}
public ConcreteStragetyB implements Stragety{
public void algorithm(){
System.out.println("ConcreteStragetyB");
}
}
随着策略的增加,子类也会变得繁多。