策略模式(Strategy):定义了算法家族,分别封装起来,他们之间可以相互替换,此算法的变换,不会影响到算法的客户。
上图中Strategy的子类定义了不同的算法,Context聚合Strategy抽象类,Context来维护具体策略的关系,客户端无需知道内部具体操作。
具体实现:
package strategy;
public abstract class Strategy {
abstract void addMethodInterface();
}
package strategy;
public class StarategyImplA extends Strategy {
@Override
void addMethodInterface() {
System.out.println("A 策略");
}
}
package strategy;
public abstract class StarategyImplB extends Strategy{
@Override
void addMethodInterface() {
// TODO Auto-generated method stub
System.out.println("B 策略");
}
}
package strategy;
public class StarategyImplC extends Strategy{
@Override
void addMethodInterface() {
// TODO Auto-generated method stub
System.out.println("C 策略");
}
}
Context类:
package strategy;
public class Context {
Strategy stragety;
public Context(Strategy stregy){
this.stragety=stregy;
};
void invokeMethod(){
stragety.addMethodInterface();
}
}
最后客户端调用:
package strategy;
public class client {
public static void main(String[] args) {
Strategy strt =new StarategyImplA();
//只需传入具体的策略实现子类就可以
Context con =new Context(strt);
con.invokeMethod();
}
}