zoukankan      html  css  js  c++  java
  • 设计模式:责任链模式

     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);

     最后的效果:

  • 相关阅读:
    一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
    常用Git命令大全
    职场被边缘化是怎样的
    HTTP网络设置
    java黑科技
    cmd执行java命令
    python 使用镜像下载依赖包
    初识go语言
    华为交换机(S5720)配置日志外发syslog服务器
    Neo4j记录
  • 原文地址:https://www.cnblogs.com/mrszhou/p/7578124.html
Copyright © 2011-2022 走看看