责任链模式场景:
论坛,举报
【举报】:粗口,黄赌毒,反政府
【处理】:版主,警察,国安
class Banzhu {
protected $power = 1;
public function proc(){
echo "删帖";
}
}
class Police {
protected $power = 2;
public function proc(){
echo "抓人";
}
}
class Guoan {
protected $power = 3;
public function proc(){
echo "灭口";
}
}
$jb = $_POST["jubao"] = 1;
if ($jb == 1) {
$admin = new Banzhu();
} else if($jb == 2) {
$police = new Police();
}else if($jb == 3) {
$guoan = new Guoan();
}
具体实现
header("Content-type:text/html;charset=utf-8");
class Admin {
public function __construct(){
if ($this->top === null) {
return;
}
$this->toper = new $this->top;
}
public function proc($danger){
if ($danger <= $this->power) {
$this->doProc();
} else {
$this->toper->proc($danger);
}
}
}
class Banzhu extends Admin {
protected $power = 1;
protected $top = 'Police';
public function doProc(){
echo "删帖";
}
}
class Police extends Admin {
protected $power = 2;
protected $top = 'Guoan';
public function doProc(){
echo "抓人";
}
}
class Guoan extends Admin {
protected $power = 3;
protected $top = null;
public function doProc(){
echo "灭口";
}
}
$danger = 2;
$admin = new Banzhu();
$admin->proc($danger);
print_r($admin);