设计模式|状态模式

#设计模式 [字体 ··]

在状态模式中,当一个对象的内在状态改变时允许改变其行为, 这个对象看起来像是改变了它的类。

代码

1public abstract class State {
2    public String stateName;
3    public abstract void handle(Context context);
4}
 1public class Context {
 2    private State state;
 3
 4    public Context(State state) {
 5        this.state = state;
 6    }
 7
 8    public void setState(State state) {
 9
10        System.out.println("当前状态为: "+this.state.stateName);
11        this.state = state;
12        System.out.println("状态变更为: "+this.state.stateName);
13        System.out.println("--------------------");
14    }
15
16    public void request(){
17        state.handle(this);
18    }
19}
 1public class ConcreteStateA extends State {
 2    public ConcreteStateA(){
 3        stateName = "状态A";
 4    }
 5
 6    @Override
 7    public void handle(Context context) {
 8        context.setState(new ConcreteStateB());
 9    }
10}
 1public class ConcreteStateB extends State{
 2    public ConcreteStateB() {
 3        stateName = "状态B";
 4    }
 5
 6    @Override
 7    public void handle(Context context) {
 8        context.setState(new ConcreteStateA());
 9    }
10}
 1public class Main {
 2    public static void main(String[] args) {
 3        Context context = new Context(new ConcreteStateA());
 4
 5        context.request();
 6        context.request();
 7        context.request();
 8    }
 9}
10
11//输出
12当前状态为: 状态A
13状态变更为: 状态B
14--------------------
15当前状态为: 状态B
16状态变更为: 状态A
17--------------------
18当前状态为: 状态A
19状态变更为: 状态B
20--------------------


博客没有评论系统,可以通过 邮件 评论和交流。