定义:允许一个对象在其内部状态改变时改变它的行为,让对象看起来似乎修改了它的类。
定义:
package state_model;
/**
* @author naivor
* 状态模式-场景类
*/
public class StateModel {
public static void main(String[] args) {
Context context=new Context(new ConcreteStateA());
context.request();
context.request(); //每执行一次请求,就会改变状态
}
}
/**
*
* @author naivor
* 状态模式-状态抽象类
*/
abstract class State{
public abstract void handle(Context context);
}
/**
*
* @author naivor
* 状态模式-状态A类
*/
class ConcreteStateA extends State{
@Override
public void handle(Context context) {
context.setState(new ConcreteStateB());
}
}
/**
*
* @author naivor
* 状态模式-状态B类
*/
class ConcreteStateB extends State{
@Override
public void handle(Context context) {
context.setState(new ConcreteStateA());
}
}
/**
*
* @author naivor
* 状态模式-状态处理类
*/
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 request(){
state.handle(this);
}
}