zoukankan      html  css  js  c++  java
  • 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);

  • 相关阅读:
    nginx 通过状态码判断url该怎么走
    php报错大全
    带有空格的字符串传给脚本当参数
    shell 命令行参数
    将图片画到canvas 上的几种方法(转)
    JS 中document.write()的用法和清空的原因浅析(转)
    网页调试js时,如何知道某个事件对应哪段js代码?
    格式化JS代码
    js new到底做了什么?如何重写new?(转)
    理解javascript中的立即执行函数(function(){})()(转)
  • 原文地址:https://www.cnblogs.com/gyfluck/p/9680978.html
Copyright © 2011-2022 走看看