• 技术文章 >php教程 >php手册

    php设计模式 State (状态模式)

    2016-06-21 08:54:14原创907
    复制代码 代码如下:


    /**
    * 状态模式
    *
    * 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它所属的类
    *
    */
    interface State
    {
    public function handle($state);
    public function display();
    }
    class Context
    {
    private $_state = null;
    public function __construct($state)
    {
    $this->setState($state);
    }
    public function setState($state)
    {
    $this->_state = $state;
    }
    public function request()
    {
    $this->_state->display();
    $this->_state->handle($this);
    }
    }
    class StateA implements State
    {
    public function handle($context)
    {
    $context->setState(new StateB());
    }
    public function display()
    {
    echo "state A
    ";
    }
    }
    class StateB implements State
    {
    public function handle($context)
    {
    $context->setState(new StateC());
    }
    public function display()
    {
    echo "state B
    ";
    }
    }
    class StateC implements State
    {
    public function handle($context)
    {
    $context->setState(new StateA());
    }
    public function display()
    {
    echo "state C
    ";
    }
    }
    // 实例化一下
    $objContext = new Context(new StateB());
    $objContext->request();
    $objContext->request();
    $objContext->request();
    $objContext->request();
    $objContext->request();



    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:php设计模式 Delegation(委托模式) 下一篇:php设计模式 Factory(工厂模式)
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• php实现的mongodb操作类• php上传图片之时间戳命名(保存路径),• php文件缓存类实例整理• PHP数组排序函数使用方法• 论坛显示顺序的问题
    1/1

    PHP中文网