状态模式(State Pattern)
一、状态模式需要两种类型实体参与:
???? 1、状态管理器
?????2、状态抽象类或接口
?
?
二、源码
???? 1、状态抽象类
public abstract class State {public abstract void turn(Context context);}
?
???? 2、状态子类
public class East extends State {public void turn(Context context){context.setState(new South());System.out.println("方向转变:东到南");}}
?
public class South extends State {public void turn(Context context){context.setState(new West());System.out.println("方向转变:南到西");}}
?
public class West extends State {public void turn(Context context){context.setState(new North());System.out.println("方向转变:西到北");}}
?
public class North extends State {public void turn(Context context){context.setState(new East());System.out.println("方向转变:北到东");}}
?
???? 3、状态管理器
public class Context {private State state;public State getState() {return state;}public void setState(State state) {this.state = state;}public Context(){this.state = new East();}public void turn(){this.state.turn(this);}}
?
???? 4、测试类
public class Test {public static void main(String[] args) {Context c = new Context();c.turn(); //东到南c.turn(); //南到西c.turn(); //西到北c.turn(); //北到东}}
?