读书人

状态方式(State Pattern)

发布时间: 2012-10-25 10:58:58 作者: rapoo

状态模式(State Pattern)

一、状态模式需要两种类型实体参与:

???? 1、状态管理器

?????2、状态抽象类或接口

?
状态方式(State Pattern)
?

二、源码

???? 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(); //北到东}}

?

读书人网 >软件架构设计

热点推荐