• php责任链模式


    php 责任链模式

    又叫职责链模式。包含了一些命令对象和一些处理对象,每个处理对象决定它能处理那些命令对象,它也知道应该把自己不能处理的命令对象交下一个处理对象,该模式还描述了往该链添加新的处理对象的方法。

    示例情景一:

             当用户发布一个帖子时:

             如果版主可以决定,就版主处理;

             如果版主不能决定,就交给上一级管理员处理;

             如果管理员不能决定,就交给上一级治安部门处理;

    示例情景二:

             当一个员工请假时:

             如果组长可以决定,就组长处理;

             如果组长不能决定,就交给上一级主管处理;

             如果主管不能决定,就交给上一级经理处理;

             如果经理不能决定,就交给上一级人事处理。


     以情景一示例:

    
    //示例:当处理一个帖子时,
    //如果不文明严重程度处理
    //1级,版主删帖
    //2级,管理员封账号
    //3级,治安部门管理
    
    //版主
    class board{
        protected $level = 1;//当前级别为1
        protected $top = 'admin';//高一级的处理
    
        public function process($lv=1){
            if($lv <= $this->level){
                echo '版主删帖' . '<br/>';
            }else{
                $topCls = new $this->top;
                $topCls->process($lv);
            }
        }
    }
    
    //管理员
    class admin{
        protected $level = 2;//当前级别为2
        protected $top = 'police';//高一级的处理
    
        public function process($lv=2){
            if($lv <= $this->level){
                echo '管理员冻结登录账号' . '<br/>';
            }else{
                $topCls = new $this->top;
                $topCls->process($lv);
            }
        }
    }
    
    
    //治安部门
    class police{
        public function process($lv=3){
            echo '治安部门参与治理' . '<br/>';
        }
    }
    
    
    $lv = isset($_GET['lv'])?$_GET['lv']:1;
    
    $cls = new board();
    $cls->process($lv);

  • 相关阅读:
    iOS开发 | 自定义不规则label
    监控redis的操作命令
    HTML常用标签
    前端学习【第一篇】: HTML内容
    MySQL数据库修改字段的长度
    python模块之:paramiko
    使用pymysql操作mysql数据库
    Python开发【第九篇】: 并发编程
    JNI调用实例
    JVM性能调优入门
  • 原文地址:https://www.cnblogs.com/gyfluck/p/9680978.html
Copyright © 2020-2023  润新知