状态模式把状态的改变和对应状态下的操作放到了一起,
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());
}
}