设计模式之~职责链模式

这篇具有很好参考价值的文章主要介绍了设计模式之~职责链模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简述:

        职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。这里发出这个请求的客户端并不知道这当中的哪一个对象最终处理这个请求,这样系统的更改可以在不影响客户端的情况下动态地重新组织和分配责任。

结构图:

设计模式之~职责链模式

实例:

设计模式之~职责链模式

责任链模式存在以下两种情况:

  • 纯的职责链模式:

        一个请求必须被某一个处理者对象所接收,且一个具体处理者对某个请求的处理只能采用以下两种行为之一:自己处理(承担责任);把责任推给下家处理。

  • 不纯的职责链模式:

        允许出现某一个具体处理者对象在承担了请求的一部分责任后又将剩余的责任传给下家的情况,且一个请求可以最终不被任何接收端对象所接收。

优点:

  • 当客户提交一个请求时,请求是沿链传递直至有一个ConcreteHandler对象负责处理它,这样做的好处是请求者不用管哪个对象来处理,反正该请求会被处理就对了。

  • 接收者和发送者都没有对方的明确信息,且链中的对象自己也并不知道链的结构。结果是职责链可简化对象的相互连接,它们仅需保持一个指向其后继者的引用,而不需保持它所有的候选接受者的引用。这也就大大降低了耦合度了。(简化了对象:使得对象不需要知道链的结构; 降低耦合度:将请求的发送者和接收者解耦)

  • 增强给对象指派职责的灵活性。通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任

缺点:

  • 一个请求极有可能到了链的末端都得不到处理,或者因为没有正确配置而得不到处理,这就很糟糕了

  • 如果责任链的链路太长或者处理时间过程,会影响性能

  • 如果节点对象存在循环引用时,会造成死循环,导致系统崩溃

使用场景:

        责任链模式主要是解耦了请求与处理,用户只需要将请求发送到链上即可,无需关心请求的具体内容和处理细节,请求会自动进行传递直至有节点进行处理。可以适用于如下场景:

  • 多个对象可以处理同一请求,但具体由哪个对象处理则在运行时动态决定

  • 在不明确指定接收者的情况下,向多个对象中的一个提交请求

  • 可以动态指定一组处理对象的处理请求文章来源地址https://www.toymoban.com/news/detail-468659.html

到了这里,关于设计模式之~职责链模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式原则之:单一职责模式

      对类来说的,即一个类应该只负责一项职责。如类A负责两个不同的职责,职责1,职责2。当职责1需求变更而改变A时,可能造成职责2智行错误,所以要将类A的粒度分解为A1,A2

    2024年02月15日
    浏览(30)
  • js设计模式:职责链模式

    可以处理链式调用的业务逻辑,下一步操作需要上一步操作的处理结果 可以使用职责链模式进行解耦操作,按顺序链向下传递,依次向下查找可以处理的业务逻辑

    2024年02月21日
    浏览(25)
  • 设计模式—— 单一职责原则

    1,代码重用性(即:相同功能的代码,不用多次编写) 2,可读性(即:编程规范性,便于其他程序员的阅读和理解) 3,可扩展性(当需要增加新的功能时,非常的方便,称为可维护性) 4,可靠性(即:当我们增加新的功能时,对原来的功能没有影响) 5,使程序呈现高内

    2024年02月12日
    浏览(30)
  • 【设计模式之禅】单一职责

    最近前辈推荐我读《设计模式之禅》这本书,原因是我写的代码质量实在是一言难尽,开发速度很快,但是bug数就很多了,设计原则这种知识就需要掌握 写这篇文主要是记录自己的学习以及督促自己 第一章【单一职责】 从我理解的层面来谈谈单一原则:明确每个类每个方法

    2024年02月13日
    浏览(27)
  • 软件设计模式系列之十五——职责链模式

    职责链模式(Chain of Responsibility Pattern)也称为责任链模式,是一种结构型设计模式,用于构建一条对象处理请求的责任链。在这个模式中,多个对象依次处理请求,直到其中一个对象能够处理该请求为止。职责链模式将请求的发送者和接收者解耦,允许多个对象都有机会处理

    2024年02月08日
    浏览(25)
  • 【C++设计模式】单一职责原则

    2023年8月26日,周六上午 目录 概述 一个简单的例子 用单一职责原则来设计一个简单的学生管理系统 单一职责原则(Single Responsibility Principle,SRP),它是面向对象设计中的一个基本原则。 单一职责原则的核心思想是,一个类应该只有一个引起它变化的原因。 换句话说, 一个

    2024年02月11日
    浏览(23)
  • 【8】c++设计模式——>单一职责原则

    C++面向对象三大特性之一的 封装 指的就是将单一事物抽象出来组合成一个类,所以我们在设计类的时候每个类中处理的是单一事物而不是某些事物的集合。让类的功能单一,不让类与具体的事物耦合。 设计模式中所谓的单一职责原则,就是对一个类而言,应该仅有一个引起

    2024年02月07日
    浏览(28)
  • 用Rust实现23种设计模式之 职责链模式

    解耦:职责链模式将请求发送者和接收者解耦,使得多个对象都有机会处理请求,而不是将请求的发送者和接收者紧密耦合在一起。 灵活性:可以动态地改变或扩展处理请求的顺序和责任链中的对象。 可维护性:每个处理者只需关注自己的责任,使得代码更易于理解、维护

    2024年02月14日
    浏览(24)
  • 设计模式之职责链模式(ChainOfResponsibility)的C++实现

    在软件开发过程中,发送者经常发送一个数据请求给特定的接收者对象,让其对请求数据进行处理(一个数据请求只能有一个对象对其处理)。如果发送的每个数据请求指定特定的接收者, 将带来发送者与接收者的紧密解耦合问题。职责链模式可以将请求发送者与接收者解

    2024年02月11日
    浏览(29)
  • 设计模式-职责链模式在Java中使用示例-采购审批系统

    采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元) 的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元) 的采购单,50万元及以上的采购单

    2024年02月16日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包