策略模式的概念图
策略模式源来
在生活中,实现一个目标有多种方式方法,也就是有多种策略。可以用if-else来简单的判断,但是当条件变多,并且条件变复杂后,耦合会十分的高,逻辑混乱不够清晰。
所以就产生了策略模式。
首先有一个上下文类Context,这个类持有一个策略的类引用 Strategy,并且有一个set方法。
public Class Context{
Strategy strategy;
public void Context(Strategy strategy){
this.strategy=strategy;
}
public void doSomething(){
strategy.doSomething();
}
}
然后将Strategy当做接口类,声明必须要实现的方法doSomething(),实现它的多个策略子类。
public inteface Strategy{
public void doSomething();
}
public Class OneStrategy implement Strategy{
public void doSomething(){
System.out.println("one");
}
}
public Class TwoStrategy implement Strategy{
public void doSomething(){
System.out.println("two");
}
}
最后使用策略OneStrategy来解决问题。
public void main(){
Context context=new Context(new OneStrategy);
context.doSomething();
}
若要是用策略TwoStrategy,将TwoStrategy 传递进Context中即可。
核心思路是,持有接口引用,使用实现接口的具体类来覆盖其方法,可扩展性和维护性极强。