源自:http://www.blogjava.net/flustar/archive/2007/12/05/state.html
State模式:
允许一个对象在其状态改变时,改变它的行为。看起来对象似乎修改了它的类。
例子:
public interface State {
public void handle(Context ctx);
}
public class Context {
private State _state;
public Context(State state) {
_state = state;
}
public void request() {
if (_state != null) {
_state.handle(this);
}
}
public void ChangeState(State s) {
if (_state != null) {
_state = null;
}
_state = s;
}
}
public class ConcreteStateA implements State {
public void handle(Context ctx) {
System.out.println("handle by ConcreteStateA");
if (ctx != null) {
ctx.ChangeState(new ConcreteStateB());
}
}
}
public class ConcreteStateB implements State {
public void handle(Context ctx) {
System.out.println("handle by ConcreteStateB");
if (ctx != null) {
ctx.ChangeState(new ConcreteStateA());
}
}
}
public class StateClient {
public static void main(String[] args) {
State state = new ConcreteStateA();
Context context = new Context(state);
context.request();
context.request();
context.request();
context.request();
}
}
本文详细介绍了状态模式的概念及其应用。通过具体实例展示了如何使用状态模式来实现对象状态的切换,使得对象能够在不同状态下表现出不同的行为。文章包含了一个简单的状态模式实现案例,通过两个具体状态类的交互,展示了状态模式的基本原理。

被折叠的 条评论
为什么被折叠?



