爱编程,爱生活

Java设计模式<状态机模式>

2018-06-16  本文已影响29人  熬夜的猫头鹰

Java设计模式<状态机模式>

意图

解决的问题

场景

如何解决

概述


封装了转换规则可以自枚举可能的状态,在枚举状态之前需要确定状态种类多重条将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为

Demo

创建一个接口State.java

public interface State {

    public void doAction(Context context);
}

实现类

public class StartState implements State{
    public void doAction(Context context) {
        System.err.println("i have started the machine");
        context.setState(this);
    }
    public String toString(){
        return "Start State";
    }
}

public class StopState implements State{
    public void doAction(Context context) {
        System.out.println("I have stop the machine");
        context.setState(this);
    }
    public String toString(){
        return "Stop State";
    }
}

DemoMain

public class DemoMain {
    public static void main(String[] args) {
        Context context = new Context();
        StartState startState = new StartState();
        startState.doAction(context);
        System.out.println(context.getState().toString());

        StopState stopState = new StopState();
        stopState.doAction(context);

        System.out.println(context.getState().toString());
    }
}

上一篇 下一篇

猜你喜欢

热点阅读