美文网首页设计模式
状态模式(state)

状态模式(state)

作者: 剑道_7ffc | 来源:发表于2020-04-28 16:54 被阅读0次

一句话总结

状态和行为

内容

状态模式的核心是状态和行为的绑定,不同状态对应不同的行为。

场景

订单状态的变化;电梯的变化

类图

代码示例

//环境类
public class Context {
    public static final State STATE_A = new ConcreteStateA();
    public static final State STATE_B = new ConcreteStateB();
    // 默认状态A
    private State currentState = STATE_A;
    {
        STATE_A.setContext(this);
        STATE_B.setContext(this);
    }

    public void setState(State state) {
        this.currentState = state;
        this.currentState.setContext(this);
    }

    public State getState() {
        return this.currentState;
    }

    public void handle() {
        this.currentState.handle();
    }
}
// 抽象状态:State
public abstract class State {
    protected Context context;

    public void setContext(Context context) {
        this.context = context;
    }

    public abstract void handle();
}
//具体状态类
public class ConcreteStateA extends State {
    @Override
    public void handle() {
        System.out.println("StateA do action");
        // A状态完成后自动切换到B状态
        this.context.setState(Context.STATE_B);
        this.context.getState().handle();
    }
}
//具体状态类
public class ConcreteStateB extends State {
    @Override
    public void handle() {
        System.out.println("StateB do action");
    }
}
public class Test {
    public static void main(String[] args) {
        Context context = new Context();
        context.setState(new ConcreteStateA());
        context.handle();
    }
}

源码

相关文章

  • State模式

    状态模式(State模式) 定义 状态模式,又称状态对象模式(Pattern of Objects for S...

  • State状态模式

    状态模式的核心是将状态抽象为类,然后将状态的改变包含在类中,这样就避免了在client中写出大量的if...els...

  • 状态模式(State)

    结构 模式的组成环境类(Context): 定义客户感兴趣的接口。维护一个ConcreteState子类的实例,...

  • 状态模式(State)

    定义允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects fo...

  • 状态模式-state

    允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了他的类 state是一个接口,定义了基本操作,co...

  • 状态模式(State)

    1、概念 状态模式允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它所属的类,属于行为型模式。 2...

  • 状态模式(State)

    状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。代替大量if el...

  • 状态模式(State)

    参考博客iOS App的设计模式开发中对State状态模式的运用 使用场景: 例子1:按钮来控制一个电梯的状态,一...

  • 状态(State)模式

  • State 状态模式

    设计原则学习笔记 设计模式学习笔记 作用 将一个类在不同状态下的操作组合起来,成为一个类。方便不同状态下的操作切...

网友评论

    本文标题:状态模式(state)

    本文链接:https://www.haomeiwen.com/subject/rrxbwhtx.html