概念
又叫職責鍊模式。包含了一些指令對象和一些處理對象,每個處理對象決定它能處理哪些指令對象,它也知道應該把自己不能處理的指令對象交下一個處理對象,該模式還描述了往該鍊添加新的處理對象的方法。
示例情景一:
當使用者釋出一個文章時:
如果版主可以決定,就版主處理;
如果版主不能決定,就交給上一級管理者處理;
如果管理者不能決定,就交給上一級治安部門處理;
示例情景二:
當一個員工請假時:
如果組長可以決定,就組長處理;
如果組長不能決定,就交給上一級主管處理;
示例
//示例:當處理一個文章時,
//如果不文明嚴重程度處理
//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);