状态模式把状态的改变和对应状态下的操作放到了一起,
package com.roc.state; public class Context { private State state; public Context(State state){ this.state=state; } public State getState() { return state; } public void setState(State state) { this.state = state; } public void stateChange(){ state.action(this); } }
package com.roc.state; /** * 抽象状态类 * @author liaowp * */ public abstract class State { public abstract void action(Context context); }
//具体的类,执行相应操作,并设置操作后的状态
package com.roc.state; public class OpenSate extends State{ public void action(Context context) { System.out.println("开"); context.setState(new CloseState()); } }