前言
月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂)
央是一片海洋,海乃百川,代表着一块海绵(吸纳万物)
泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出)
月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容
希望大家一起坚持这个过程,也同样希望大家最终都能从零到零,把知识从薄变厚,再由厚变薄!
一、什么是责任链模式?
责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。
在责任链模式中,每个处理器对象都包含一个指向下一个处理器对象的引用。当请求被发送时,它沿着链条依次传递,直到有一个处理器对象能够处理请求为止。
二、责任链模式的优缺点:
优点:
-
降低耦合度:责任链模式将请求的发送者和接收者解耦,使得请求发送者不需要知道请求的处理细节,只需要将请求发送给第一个处理者即可。
-
灵活性:责任链模式可以动态地组合处理者,增加或删除处理者,改变处理者之间的顺序,从而灵活地处理请求。
-
可扩展性:责任链模式可以方便地扩展新的处理者,而不需要修改原有的代码。
-
可维护性:责任链模式将请求的处理分散到多个处理者中,每个处理者只需要关注自己的处理逻辑,降低了代码的复杂度,易于维护。
缺点:
-
可能会造成性能问题:由于每个请求都需要遍历整个链,当链比较长时,会影响程序的性能。
-
可能会造成复杂性问题:责任链模式的实现需要仔细考虑链中每个节点的职责和顺序,否则可能会导致代码变得复杂难以维护。
-
可能会造成调试问题:由于请求的处理流程是由多个对象共同协作完成的,当出现问题时,需要逐个调试每个节点,增加了调试的难度。
三、责任链模式的结构:
四、责任链模式实战:
以上图为例,假设现在小明需要请五天假,但是请的时间太长,直接leader不能做决定,得整个部门负责人确定.
1.创建抽象的责任链
2.创建具体责任人
3.测试
4.测试结果
五.总结:
责任链模式的应用场景:
-
日志记录:将日志记录分为不同的级别,例如 DEBUG、INFO、WARN、ERROR 等级别,每个级别对应一个处理器,根据日志级别选择对应的处理器进行处理。
-
购买流程:将购买流程分为不同的处理步骤,例如验证用户信息、验证商品信息、生成订单、支付等步骤,每个步骤对应一个处理器,根据购买流程选择对应的处理器进行处理。
-
异常处理:将异常处理分为不同的级别,例如 INFO、WARN、ERROR 等级别,每个级别对应一个处理器,根据异常级别选择对应的处理器进行处理。
-
数据校验:将数据校验分为不同的步骤,例如校验数据格式、校验数据合法性、校验数据重复性等步骤,每个步骤对应一个处理器,根据数据校验步骤选择对应的处理器进行处理。