责任链模式

  责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

  示例图:

责任链模式示例图

php代码示例:

<?php
class Request{
    public $tcontent,$tnum;
    function __construct($tcontent,$tnum){
        $this -> tcontent = $tcontent;
        $this -> tnum = $tnum;
    }
}

class Manager{
    public $name,$manager;
    function __construct($temp){
        $this -> name = $temp;
    }
    function SetSuccessor($temp){
        $this -> manager = $temp;
    }
    function GetRequest($req){
    }
}

class CommonManager extends Manager{
    function GetRequest($req){
        if($req -> tnum >= 0 && $req -> tnum < 10){
            print $this->name." handled ".$req->tnum." request
";
        }else{
            $this -> manager -> GetRequest($req);
        }
    }
}

class MajorDomo extends Manager{
    function GetRequest($req){
        if($req -> tnum >= 10){
            print $this->name." handled ".$req->tnum." request
";
        }
    }
}


$common = new CommonManager("xiao");
$major = new MajorDomo("da");
$common -> SetSuccessor($major);
$req2 = new Request("salary",3);
$common -> GetRequest($req2);
$req1 = new Request("vacation",33);
$common -> GetRequest($req1);
?>

  

原文地址:https://www.cnblogs.com/zhutianpeng/p/4232163.html