设计模式之状态模式

UML图

设计模式之状态模式_第1张图片

 

定义:(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

使用场景:当一个对象改变了状态,会影响这个对象能执行的行为。比如当我们灯控制开关,有两个行为:一个是开的行为,一个是关的行为。当灯是开的状态,只能执行关的行为;当灯是关的状态,只能执行开的行为。这个时候状态是改变了灯这个对象的行为的。

具体的代码实现:

//开关状态抽象接口 State.php
setState(new OffState());
    }
}

//关状态具体实现接口 OffState.php
setState(new OnState());
    }

    public function turnOff(OnOff $onOff)
    {
        echo "当前状态为关状态,不能进行关操作\n";
    }
}

//开关控制类 OnOff.php
state->getState();
    }
    public function setState(State $state)
    {
        $this->state = $state;
    }
    public function turnOn()
    {
        $this->state->turnOn($this);
    }
    public function turnOff()
    {
        $this->state->turnOff($this);
    }

}

//入口文件 Main.php
setState($onState);
$onOff->getState();
$onOff->turnOn();
//echo "
";
//var_dump($onOff);
$onOff->turnOff();
//var_dump($onOff);
$onOff->turnOn();
//var_dump($onOff);

//类自动加载类  AutoLoader.php

 

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