【Java设计模式】状态模式

【定义】

因为状态的改变,引发对象的行为改变。

【Java设计模式】状态模式_第1张图片

【实现】

定义远程控制接口:

abstract class RemoteControl
{
    public abstract void pressSwitch(TV context);
}

定义关闭操作:

class Off extends RemoteControl
{
    @Override
    public void pressSwitch(TV context){
        System.out.println("I am Off .Going to be On now");
        context.setState(new On());
    }
}

定义打开操作:

class On extends RemoteControl
{
    @Override
    public void pressSwitch(TV context)
    {
        System.out.println("I am already On .Going to be Off now");
        context.setState(new Off());
    }
}

创建电视机: 

class TV
{
    private RemoteControl state;
    public RemoteControl getState() {
        return state;
    }
    public void setState(RemoteControl state) {
        this.state = state;
    }

    public TV(RemoteControl state)
    {
        this.state=state;
    }

    public void pressButton()
    {
        state.pressSwitch(this);
    }
}

测试:

public static void main(String[] args)
{
    System.out.println("***State Pattern Demo***\n");
    //Initially TV is Off
    Off initialState = new Off();
    TV tv = new TV(initialState);
    //First time press
    tv.pressButton();
    //Second time press
    tv.pressButton();
}

【Java设计模式】状态模式_第2张图片

你可能感兴趣的:(Java设计模式)