设计模式:责任链模式
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);
最后的效果: