状态模式,就是定义一个状态类,在这个状态类中有一个状态属性,来标明当前所处的状态;还有不同状态下要执行的方法。这些状态要暴露给外界,如外界通过不同的状态来执行不同的操作。就比如QQ的在线,忙碌,隐身等各种状态的实现。
package mode.state; /** * * 定义状态类 * * */ public class State { private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } public void method1() { System.out.println("执行了method1"); } public void method2() { System.out.println("执行了method2"); } }
package mode.state; /** * * 定义上下文对象,拥有state属性,根据不同的state method方法会有不同的执行结果 * * */ public class Context { private State state; public Context(State state) { super(); this.setState(state); } public State getState() { return state; } public void setState(State state) { this.state = state; } public void method() { if (state.getValue().equals("state1")) { state.method1(); } else if (state.getValue().equals("state2")) { state.method2(); } } }
package mode.state; public class Test { public static void main(String[] args) { State state = new State(); Context context = new Context(state); state.setValue("state1"); context.method(); state.setValue("state2"); context.method(); } }
原文地址:http://blog.csdn.net/u012613903/article/details/44174233