代码改变世界

设计模式(四)--责任链模式

2018-12-12 17:14  Caoxt  阅读(149)  评论(0编辑  收藏  举报

责任链模式: 为请求创建了一个接收者对象的链,并沿这条链传递该请求,直到有对象处理它为止。这种模式能够给予请求的类型,对请求的发送者和接收者进行解耦。

责任链模式最显著的优点就是将请求和处理分开,请求者可以不用知道是谁处理的,处理者可以不用知道请求的全貌,两者解耦。

避免超长链的出现

简单实例:员工请假时,请假1天需小领导批准;请假两天需中领导批准,请假三天需大领导批准。

<?php
class smLeader{
    public $leder_no=1;
    public $up='mdLeader';

    public function approval($day){
        if($this->leder_no>=$day){
            echo '小领导批准';
        }else{
            $up=new $this->up();
            $up->approval($day);
        }
    }
}
class mdLeader{
    public $leder_no=2;
    public $up='lgLeader';

    public function approval($day){
        if($this->leder_no>=$day){
            echo '中领导批准';
        }else{
            $up=new $this->up();
            $up->approval($day);
        }
    }
}

class lgLeader{
    public $leder_no=3;public function approval($day){
        echo '大领导批准';
    }
}

$sm=new smLeader();

$sm->approval(3);

参考连接:http://video.1kejian.com/video/?79018-0-10.html