package com.zwy;
public class StateTest {
/*状态模式:当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其他类.
*
* 将与特定状态相关的行为局部化,并且将不同状态的行为分割开来.
*
* 注:个人觉得这个对一系列的对象形成链状,如果请求到达一个对象,如果这个请求属于当前
* 状态就进行处理,否则,就将请求后移~直到请求可以被处理
* */
public static void main(String[] args) {
// TODO Auto-generated method stub
Context context = new Context();
context.Request();
context.Request();
context.Request();
context.Request();
}
}
abstract class State {
public abstract void Handle( Context context);
}
class contextStateA extends State {
@Override
public void Handle(Context context) {
context.setState(new contextStateB());
}
}
class contextStateB extends State {
@Override
public void Handle(Context context) {
context.setState(new contextStateA());
}
}
class Context {
public State state;
public Context(){
this.state = new contextStateB();
}
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
System.out.println(state.getClass());
}
public void Request(){
state.Handle(this);
}
}