状态模式

/**
 * 状态模式:跟策略模式很像,只不过策略模式是根据行为来判断的,而状态模式是根据状态来判断的:例如猪有睡觉和醒来2种状态,睡觉就会做梦.醒来就会吃东西
 * 模式特点:一个状态接口和多个状态实现类 ,一个上下文类,状态对象以组合的方式作为属性到上下文类中
 *
 *
 *
 *
 */
//状态接口
public interface IState {

    void doSomething();
}
//状态接口的实现类,睡觉状态
public class Sleep implements IState {
    @Override
    public void doSomething() {
        System.out.println("dreaming -----");
    }
}
//状态接口实现类,醒来状态
public class Wake implements IState {
    @Override
    public void doSomething() {
        System.out.println("eating----");
    }
}
//状态类,实现不同状态做不同事情
public class Pig {
    private IState state;

    public IState getState() {
        return state;
    }

    public void setState(IState state) {
        this.state = state;
    }

    public void doSomething(){
        state.doSomething();
    }
}
public class Test {
    public static void main(String[] args) {
        IState sleep = new Sleep();
        IState wake = new Wake();
        Pig pig = new Pig();
        //猪睡觉的状态
        pig.setState(sleep);
        pig.doSomething();
        //猪醒来时的状态
        pig.setState(wake);
        pig.doSomething();


    }
}
原文地址:https://www.cnblogs.com/yangxiaohui227/p/10932075.html