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