责任链模式

判断当前对象能否处理,不能处理则交给下一级对象,下一级不能处理,继续交给下一级。

我们看下面一个比较好理解的例子,摘抄于 https://blog.51cto.com/u_11045899/5344238

// 领班
class Foreman{
    // 自己的等级
    private $level=1;
    // 上级
    protected $superior='Director';
    public function process($level){
        if($this->level>=$level){
            // 自己能处理问题的级别大于等于当前事情级别,就自己处理
            echo '领班处理'.PHP_EOL;
        }else{
            (new $this->superior)->process($level);
        }
    }
}

// 主管
class Director{
    // 自己的等级
    private $level=2;
    // 上级
    protected $superior='Manager';
    public function process($level){
        if($this->level>=$level){
            echo '主管处理'.PHP_EOL;
        }else{
            (new $this->superior)->process($level);
        }
    }
}

// 经理
class Manager{
    // 自己的等级
    private $level=3;
    // 上级
    protected $superior='TopManager';
    public function process($level){
        if($this->level>=$level){
            echo '经理处理'.PHP_EOL;
        }else{
            (new $this->superior)->process($level);
        }
    }
}

// 总经理
class TopManager{
    // 自己的等级
    private $level=4;
    // 上级
    protected $superior='President';
    public function process($level){
        if($this->level>=$level){
            echo '总经理处理'.PHP_EOL;
        }else{
            (new $this->superior)->process($level);
        }
    }
}

// 董事长
class President{
    // 自己的等级
    private $level=5;
    public function process($level){
        echo '董事长处理'.PHP_EOL;
    }
}

// 责任链模式处理问题
$level=rand(1,5);
print('问题级别:'.$level);
$foreman=new Foreman();
$foreman->process($level);
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇