设计模式 -- 责任链模式

责任链模式对有很多if else的场景也非常适合,在项目中比如 对一个商城中不同的会员等级做出不一样的处理,然后各个等级处理返回重组返回相同数据结构的数据即可。

生活中例子:比如你想请个假,需要你的主管同意,需要主管的上级同意,以此类推。

优点:各个节点责任明确,处理不了就继续找上一级,比如上面的例子如果主管的上级都处理不了(可能是某个副总),那直接找老板请假去!

备注:可以达到责任解耦;可拓展性强(对处理不了的事问上一级,在代码中的实现就是增加一个处理类即可);客户端调用无感知(比如客户让你写个合同,是要你写的,但是你处理不了,继续问你的上级请求他处理,以此类推;但是对客户来说,客户是无感知的,只要写合同这件事处理好就行,客户不管你公司是如何写处理的!)

<?php

abstract class Handler {
    protected $higher = null;
    abstract public function operation($lev);
}
// 主管处理类
class Zhuguan extends Handler {
    protected $higher = "Fuzong";  //标识:主管的上级类名称

    public function operation($lev)
    {
       
        if ($lev <= 1) {
            echo "主管就可以搞定!";// TODO: Implement operation() method.
        } else {
            //主管处理不了,请求某副总处理
            $higher = $this->higher;
            $this->higher = new $higher();
            $this->higher->operation($lev);
        }
    }
}

// 副总处理类
class Fuzong extends Handler {
    protected $higher = "Boss"; //标识:副总的上级类名称

    public function operation($lev)
    {
     
        if ($lev <= 50) {
            echo "副总就可以搞定";  // TODO: Implement operation() method.
        } else {
            echo "副总处理不了;继续请求上级处理";
        }
    }
}

//如果需要拓展⏬即可
//老板处理类
//合伙人处理类


//客户端调用;比如本人请假
$try = new Zhuguan();
$lev = rand(0, 100);
$try->operation($lev);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值