天天看點

php中責任鍊模式

概念

又叫職責鍊模式。包含了一些指令對象和一些處理對象,每個處理對象決定它能處理哪些指令對象,它也知道應該把自己不能處理的指令對象交下一個處理對象,該模式還描述了往該鍊添加新的處理對象的方法。

示例情景一:

         當使用者釋出一個文章時:

         如果版主可以決定,就版主處理;

         如果版主不能決定,就交給上一級管理者處理;

         如果管理者不能決定,就交給上一級治安部門處理;

示例情景二:

         當一個員工請假時:

         如果組長可以決定,就組長處理;

         如果組長不能決定,就交給上一級主管處理;

示例

//示例:當處理一個文章時,
//如果不文明嚴重程度處理
//1級,版主删帖
//2級,管理者封賬号
//3級,治安部門管理

//版主
class board{
    protected $level = 1;//目前級别為1
    protected $top = 'admin';//高一級的處理

    public function process($lv=1){
        if($lv <= $this->level){
            echo '版主删帖' . '<br/>';
        }else{
            $topCls = new $this->top;
            $topCls->process($lv);
        }
    }
}

//管理者
class admin{
    protected $level = 2;//目前級别為2
    protected $top = 'police';//高一級的處理

    public function process($lv=2){
        if($lv <= $this->level){
            echo '管理者當機登入賬号' . '<br/>';
        }else{
            $topCls = new $this->top;
            $topCls->process($lv);
        }
    }
}


//治安部門
class police{
    public function process($lv=3){
        echo '治安部門參與治理' . '<br/>';
    }
}


$lv = isset($_GET['lv'])?$_GET['lv']:1;

$cls = new board();
$cls->process($lv);