2.14. 责任链模式
定义
一个对象无法处理命令,调用下一个对象来进行处理,直到找到可以处理的对象。
每个具体者应当有
- 当前级别的标识
- 当前级别的调用方法
- 上级的 具体者(如果当前级别无法处理,则调用上级具体者处理)
任务 [防御系统]
 1级 通知管理员
 2级 删除数据库
 3级 执行rm -rf /*毁灭所有数据
代码实现
注意: 很多种实现方式,并不是只有这样才能实现 责任链
需要学习的是 思路
<?php
abstract Class Defense{
    protected $curr_lev ; // 当前级别的标识
    protected $superior; // 上级具体者
    abstract function handle($lev); //当前级别的调用方法
   //交给上级具体者处理
    protected function superior($lev)  //
    {
        (new $this->superior)->handle($lev);
    }
}
class Notify extends Defense { //具体
    protected $curr_lev = 1; 
    protected $superior = 'DropDatabase';
    public function handle($lev)
    {
        if( $lev <= $this->curr_lev)
         echo "通知管理员";
        else
            $this->superior($lev);
    }
}
class DropDatabase extends Defense { //具体
    protected $curr_lev = 2;
    protected $superior = 'RmRfSystem';
    public function handle($lev)
    {
        if( $lev <= $this->curr_lev)
            echo "删除数据库";
        else
            $this->superior($lev);
    }
}
class RmRfSystem extends Defense { //具体
    protected $curr_lev = 3;
    protected $superior ;
    public function handle($lev)
    {
        if( $lev <= $this->curr_lev)
        echo "rm rf /* 执行完成";
    }
}
(new Notify())->handle(1);
(new Notify())->handle(2);
(new Notify())->handle(3);
 
           php设计模式学习
php设计模式学习 
         
             
             关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: