首页 > 其他分享 >设计模式整理

设计模式整理

时间:2023-05-25 14:25:21浏览次数:37  
标签:请求 处理 接收者 发送者 对象 整理 设计模式

责任链模式

顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。

在这种模式中,通常每个接收者都包含对另一个接收者的引用如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推

 

使用场景: 1、有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定。 2、在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。 3、可动态指定一组对象处理请求。

意图:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。

主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。

何时使用:在处理消息的时候以过滤很多道。

如何解决:拦截的类都实现统一接口。

关键代码:Handler 里面聚合它自己,在 HandlerRequest 里判断是否合适,如果没达到条件则向下传递,向谁传递之前 set 进去。

应用实例: 1、红楼梦中的"击鼓传花"。 2、JS 中的事件冒泡。 3、JAVA WEB 中 Apache Tomcat 对 Encoding 的处理,Struts2 的拦截器,jsp servlet 的 Filter。

优点: 1、降低耦合度。它将请求的发送者和接收者解耦。 2、简化了对象。使得对象不需要知道链的结构。 3、增强给对象指派职责的灵活性。通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任。 4、增加新的请求处理类很方便。

缺点: 1、不能保证请求一定被接收。 2、系统性能将受到一定影响,而且在进行代码调试时不太方便,可能会造成循环调用。 3、可能不容易观察运行时的特征,有碍于除错。

 

 

 

标签:请求,处理,接收者,发送者,对象,整理,设计模式
From: https://www.cnblogs.com/jiangzishun/p/17431056.html

相关文章

  • 设计模式(三)行为型
    1、策略模式和桥梁模式很相似,但桥梁模式的耦合更低,结构更复杂一些。 2、观察者模式观察者模式是一种行为型设计模式,当一个对象发生改变时,所有依赖它的对象都会得到通知并自动更新。这种模式也被称为发布-订阅模式或者消息机制。观察者模式包含以下几个角色:Subject(主题):被......
  • 设计模式(二)结构型
    1、代理模式创建一个代理对象来控制对另一个对象的访问,以提供额外的功能或限制。1publicinterfaceFoodService{2FoodmakeChicken();3FoodmakeNoodle();4}56publicclassFoodServiceImplimplementsFoodService{7publicFoodmakeChic......
  • Selenium自动化测试面试必备:高频面试题及答案整理
    自动化测试已经成为现代软件测试中不可或缺的一部分。在自动化测试中,Selenium是最受欢迎的工具之一,因为它可以模拟用户与Web应用程序的交互。因此,对于许多测试工程师来说,熟练掌握Selenium框架是非常重要的。如果你正在寻找一份自动化测试工作,那么你可能会被问到一些关于Selenium的......
  • Java设计模式-建造者模式
    简介建造者模式是一种创建型设计模式,用于将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通过将复杂对象的构建过程分解为多个简单的步骤来实现。与其他创建型模式不同,建造者模式强调的是将构建过程与表示分离,而不是将对象与其构建方式分离......
  • 前端跨域解决方案归纳整理
    前言前端跨域的各种文章其实已经很多了,但大部分还是不太符合我胃口的介绍跨域。看来看去,如果要让自己理解印象深刻,果然还是得自己敲一敲,并总结归纳整理一篇博客出来,以此记录。跨域的限制跨域是为了阻止用户读取到另一个域名下的内容,Ajax可以获取响应,浏览器认为这不安全,所以拦截了......
  • 《设计模式之禅》Singleton_Pattern--单例模式
    单例模式这个模式是很有意思,确实很有意思的,而且比较简单,但是我还是要说因为它使用的是如此的广泛,如此的有人缘,单例就是单一、独苗的意思,那什么是独一份呢?你的思维是独一份,除此之外还有什么不能山寨的呢?我们举个比较难复制的对象:皇帝(就是那个天子)中国的历史上很少出现两个皇帝并存的......
  • MySQL数据基础知识整理—5
        今天是MySQL数据库基础知识整理的最后一章,本次我们要整理的是隔离性和MVCC多版本并发控制技术。隔离性    在我们进行多事务的处理时,难免会出现多个事务由于不当的操作导致事务发生不可逆转的错误结果。因此,MySQLS数据库为了防止这样的事情发生,使多个并发事物之......
  • 设计模式(一)创建型
    1、单例模式饿汉模式(最简单):类加载的时候就创建对象,线程安全publicclassSingleton{//首先,将构造方法私有化privateSingleton(){};//创建私有静态实例,意味着在类加载就会进行创建privatestaticSingletoninstance=newSingleton();public......
  • 设计模式
     模板方法设计模式非常重要 什么场景使用过  聚合支付  有共同行为的场景 聚合支付:银联支付支付宝支付 微信支付通过回调通知支付成功修改订单状态为成功1、暴露一个接口,提供给第三方支付回调2、多家支付回调通知参数报文都不相同,但是有共同的通知行为。......
  • 二十三天搞懂设计模式之抽象工厂模式
    文章目录抽象工厂模式1.介绍2.实现3.代码4.总结抽象工厂模式1.介绍意图:提供一个创建一系列相关或者依赖的接口,而无需指定他们具体的类何时使用:系统的产品有多于一个产品族,而系统只消费其中某一族的产品,例子如下当前有个换装游戏,进入不同的游戏场景需要选择不同的游戏套装,比......