设计模式:责任链模式

 1 <?php
 2 
 3 header("Content-type:text/html;Charset=utf-8");
 4 class Admin {
 5     protected $toper; // 用于保存直接上级的对象
 6     public function __construct() {
 7         if ($this->top == NULL) {
 8             // 没有上级
 9             return ;
10         } else {
11             $this->toper = new $this->top; // 可变类
12         }
13     }
14     public function deal($error) {
15         if ($error <= $this->level) {
16             // 说明该管理者可以处理
17             $this->chufa();
18         } else {
19             // 交给管理者的直接上级处理
20             $this->toper->deal($error);
21         }
22     }
23 }
24 class Banzhuren extends Admin {
25     protected $level = 1; // 权力级别
26     protected $top = 'Zongjian'; // 指定直接上级
27     public function chufa() {
28         echo '扣分扣钱<br />';
29     }
30 }
31 class Zongjian extends Admin {
32     protected $level = 2; // 权力级别
33     protected $top = 'Xiaozhang'; // 指定直接上级
34     public function chufa() {
35         echo '留校察看<br />';
36     }
37 }
38 class Xiaozhang extends Admin {
39     protected $level = 3; // 权力级别
40     protected $top = NULL; // 没有直接上级
41     public function chufa() {
42         echo '开除<br />';
43     }
44 }
45 
46 $error = mt_rand(1, 3);
47 $admin = new Banzhuren;
48 $admin->deal($error);
49 echo '<br /><pre>';
50 var_dump($admin);

 最后的效果:

原文地址:https://www.cnblogs.com/mrszhou/p/7578124.html