策略模式
定义是:定义算法家族,分别封装起来,让他们之间可以相互替代,此模式让算法的变化,可以不会影响使用算法的客户。
uml图如下:
这是抽象策略类
package category;
public abstract class Stragery {
public abstract void AlgorithmInterface();
}
具体实现的三个策略
public class ConcreteStrategyA extends Stragery {
@Override
public void AlgorithmInterface() {
// TODO Auto-generated method stub
System.out.println("Methond A implements");
}
}
public class ConcreteStrategyB extends Stragery {
@Override
public void AlgorithmInterface() {
// TODO Auto-generated method stub
System.out.println("Methond B implements");
}
}
public class ConcreteStrategyC extends Stragery {
@Override
public void AlgorithmInterface() {
// TODO Auto-generated method stub
System.out.println("Methond C implements");
}
}
将策略封装到一个Context类中,然后就能在这个类中根据传入的策略不同而实现不同的策略
public class Context {
private Stragery stragery;
public Context(Stragery stragery) {
this.stragery = stragery;
}
public void ContextInterface() {
stragery.AlgorithmInterface();
}
}
main方法检验
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Context context;
context = new Context(new ConcreteStrategyA());
context.ContextInterface();
context = new Context(new ConcreteStrategyB());
context.ContextInterface();
context = new Context(new ConcreteStrategyC());
context.ContextInterface();
}
}
在实践中,如果遇到了不同时间,用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性