资讯专栏INFORMATION COLUMN

编程中的那些套路——关于责任链模式

lylwyy2016 / 2873人阅读

该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP

今天来谈谈责任链模式,乍一听责任链模式好像很高级的一样,但是相信我,其实每位天朝的同学都十分熟悉这个模式,责任链模式,就好像中国的官场制度一样,每一个级别的权利都区分的很细,举个生活中的栗子:

村委不能越级去替镇委办事情,如果村委无法解决,只能向上求助镇委

镇委不能越级去替市委办事情,如果镇委无法解决,只能向上求助市委

市委不能越级去替省委办事情,如果市委无法解决,只能向上求助省委

副领导不能越级去替正领导办事情,如果副领导无法解决,只能向上求助正领导

….

直到找到合适的~ 镇委(未解决)-> 市委(未解决)->省委(解决)->中央(老大不需要出马,因为前面已经由小弟解决了~)

对的,就是这样,每个级别有自己职责,如果自己没有权限解决这个问题,只能一层一层往上找,直到有一个合适的人出现然后解决问题。

编程中的使用场景:

在一个论坛中,如果一个人的帖子被人举报了,那么这个帖子就会进入管理员的删帖界面,那么进入哪个管理员的删帖界面呢?这个时候就用到责任链模式了,把这个帖子给权限最低的管理员,如果这个管理员无法处理,那么就一层一层往上找,直到找到一个人有权利删帖了,该流程才算结束。

接下来请看具体代码:

观察者模式.php

higher;
 
            $higher->operation($lev);
 
        }
 
    }
 
}
 
//二级官
 
class Lev2 extends duty{
 
    protected $higher = "lev3";
 
    public function operation($lev){
 
        if ($lev <= 2) {
 
            echo"镇委解决";
 
        }else{
 
            $higher = new $this->higher;
 
            $higher->operation($lev);
 
        }
 
    }
 
}
 
class Lev3{
 
    protected $higher = "lev4";
 
    public function operation($lev){
 
        if ($lev <= 3) {
 
            echo"市委解决";
 
        }else{
 
            $higher = new $this->higher;
 
            $higher->operation($lev);
 
        }
 
        }
 
}
 
class Lev4{
 
    protected $higher = null; //没有比中央更大的了,所以可以不用判断直接解决
 
    public function operation($lev){
 
            echo "中央解决";
 
        }
 
}
 
$question = new Lev1();//从最低级的开始尝试
 
$question->operation(3);//事件等级为3,所以到市委才能解决
 
//output :"市委解决";
 
?>

其实很简单,就是在当前类中定义好自己的上级名字,遇到自己解决不了的问题,就直接实例化调用上级,让它来处理。图示:

该文章属于《编程中的那些经典套路——设计模式汇总》系列

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21668.html

相关文章

  • 编程中的那些经典套路——设计模式汇总

    摘要:如果看不懂的话,可以在评论区中提问,我会第一时间回答你无论何时我一直都在嗯哼该文章属于编程中的那些经典套路设计模式汇总系列 在正式阅读前,我先谈谈我们该用什么姿势和心态学习设计模式: 如果你还没有过多的编程经验(泛指半年以下),我建议你把它当做小说来看,能看懂多少是多少,因为半年以下经验的程序员用到设计模式的情况只会出现在面试上,至于实际工作中?相对来说这部分不会由你负责。 如果你已...

    youkede 评论0 收藏0
  • 函数式编程让你忘记设计模式

    摘要:面向对象常见的设计模式有策略模式模板方法观察者模式责任链模式以及工厂模式,使用表达式函数式编程思维有助于避免面向对象开发中的那些固定代码。 本文是一篇《Java 8实战》的阅读笔记,阅读大约需要5分钟。 有点标题党,但是这确实是我最近使用Lambda表达式的感受。设计模式是过去的一些好的经验和套路的总结,但是好的语言特性可以让开发者不去考虑这些设计模式。面向对象常见的设计模式有策略模式...

    or0fun 评论0 收藏0
  • 编程中的那些套路——关于工厂模式

    摘要:该文章属于编程中的那些经典套路设计模式汇总系列,并且以下内容基于语言前面我们写了简单工厂模式,编程中的那些套路关于简单工厂模式,但简单工厂模式有一些不足违反开放封闭原则,所以需要设计出一套更加规范的设计模式。 该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 前面我们写了简单工厂模式,《编程中的那些套路——关于简单工厂模式》,但简单工厂模式有一些不足(...

    light 评论0 收藏0
  • 编程中的那些套路——关于简单工厂模式

    摘要:简单工厂模式就是遵循了这一原则,它让不同职责的类各司其职。重点来了,简单工厂模式的不足但是简单工厂模式有一个不足,虽然它遵循了单一职责原则,但它违反了另一条同样很重要的原则开放封闭原则。 该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 面向对象五大原则中有一点非常重要的原则:单一职责原则。 简单工厂模式就是遵循了这一原则,它让不同职责的类各司其职。 ...

    Rocture 评论0 收藏0
  • 编程中的那些套路——关于单例模式

    该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 在设计模式中,单例模式和工厂模式)可以说是使用的最普遍的设计模式了,所以掌握此种模式尤为重要。 单例模式一般使用在资源共享和需要控制资源的情况下。 例如:购物车,回收站,数据库连接池,计数器,配置文件共享等所有项目中只需要存在一个的模块,你都可以采用单例模式。 单例模式的好处就在于当前进程只产生一个对象(或者叫...

    sshe 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<