java设计模式—策略模式
一.概述
策略模式跟状态模式非常相似,唯一不同的是,策略模式中的Context要感知状态的变化,并且调用State的功能方法,而状态模式对具体的功能需要自己去执行,下面我们将状态模式略做修改就是策略模式。
二.应用场景
1.替代if-else或switch-case
三.模式示例:
1.创建状态接口
public interface State {
public void doAction(Context context);
public void print();
}
2.创建状态为true的具体类
public class TrueState implements State{
public void doAction(Context context) {
context.setState(this);
}
@Override
public void print() {
System.out.println("当前状态为true");
}
}
3.创建状态为false的具体类
public class FalseState implements State{
public void doAction(Context context) {
context.setState(this);
}
@Override
public void print() {
System.out.println("当前状态为false");
}
}
4.创建Context
public class Context {
private State state;
public Context(){
state = null;
}
public void setState(State state){
this.state = state;
}
public State getState(){
return state;
}
public void print(){
state.print();
}
}
5.模式调用
public class Test {
public static void main(String[] args) {
Context context = new Context();
TrueState trueState = new TrueState();
trueState.doAction(context);
context.print();
FalseState falseState = new FalseState();
falseState.doAction(context);
context.print();
}
}