状态模式

在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。
在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。

例子:同样一个人在不同的状态下表现是不一样的

image.png


class StatePattern {
    public static void main(String[] args) {
        Context zhangSan = new Context();
        zhangSan.changeState(new Happy());
        zhangSan.doSomething();
        zhangSan.changeState(new Sad());
        zhangSan.doSomething();
    }
}

abstract class State {
    abstract void doWork();
}

class Happy extends State {

    @Override
    void doWork() {
        System.out.println("积极主动!");
    }
}

class Angry extends State {

    @Override
    void doWork() {
        System.out.println("无精打采!");
    }
}

class Sad extends State {

    @Override
    void doWork() {
        System.out.println("啥也不干!");
    }
}

class Context {
    private State state;
    public void changeState(State state) {
        this.state = state;
    }

    public void doSomething() {
        state.doWork();
    }
}
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享