首页 > 模式算法 > php中责任链模式
2012
04-28

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);


本文》有 0 条评论

留下一个回复