设计模式 | 状态模式

97 阅读1分钟

简介

把对象的行为包装在不同的状态对象里,每个状态对象都有一个共同的抽象状态基类,让一个对象在其内部状态改变时,其行为也随之改变。

定义

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

使用场景

一个对象的行为取决于它的状态,并且必须在运行时根据状态改变其行为。

Java 代码示例

public interface State {
    void doA();
    void doB();
}

public class State1 implements State {
    @Override
    public void doA() {

    }

    @Override
    public void doB() {

    }
}

public class State2 implements State {
    @Override
    public void doA() {

    }

    @Override
    public void doB() {

    }
}

public class StateController {
    private State mState;

    public void setState(State state) {
        mState = state;
    }

    public void doA() {
        mState.doA();
    }

    public void doB() {
        mState.doB();
    }
}