行为型模式的名称、定义、学习难度和使用频率如下表所示:
1.如何理解职责链模式
-
最常见的职责链是直线型,即沿着一条单向的链来传递请求。链上的每一个对象都是请求处理者,职责链模式可以将请求的处理者组织成一条链,并让请求沿着链传递,由链上的处理者对请求进行相应的处理,客户端无须关心请求的处理细节以及请求的传递,只需将请求发送到链上即可,实现请求发送者和请求处理者解耦。
-
职责链模式(Chain of Responsibility Pattern):避免将请求发送者与接收者耦合在一起,让多个对象都有机会接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。
-
职责链模式通过建立一条链来组织请求的处理者。请求将沿着链进行传递,请求发送者无须知道请求在何时、何处以及如何被处理,实现了请求发送者与处理者的解耦。在软件开发中,如果遇到有多个对象可以处理同一请求时可以应用职责链模式。例如,在Web应用开发中创建一个过滤器(Filter)链来对请求数据进行过滤,在工作流系统中实现公文的分级审批等。
-
职责链模式的适用场景通常具有以下特点:存在一系列有序的处理步骤或环节,每个环节的处理者具有不同的职责和处理能力,并且处理的顺序和具体的处理者可能会根据情况动态变化。
2.如何理解纯与不纯的职责链模式
-
纯的职责链模式
-
概念:一个请求必须被链中的某个处理者处理,而且每个处理者要么处理请求,要么将请求传递给下一个处理者,不存在中途终止传递的情况。也就是说,在纯的职责链模式中,请求一定会沿着链传递下去,直到有一个处理者能够处理它为止。
-
常见的业务场景:审批流程、消息传递、事件的处理等。
-
优点:解耦请求发送者和接收者、增强了系统的灵活性、实现了职责的分离、动态分配职责、提高了代码的可维护性和可扩展性等。
-
-
不纯的职责链模式
-
概念:允许某个处理者在处理请求后,停止请求的传递,或者在处理不了请求的情况下也不传递给下一个处理者。这可能导致某些情况下请求得不到处理。
-
常见的业务场景:部份可中断的流程、条件性处理、优先级的处理、异步处理的部分场景等。
-
优点:提高效率、灵活控制流程、减少不必要的处理
-
3.职责链模式的优缺点
-
优点
-
解耦请求者和处理者:使得请求的发送方不需要知道具体由谁来处理请求,降低了它们之间的直接依赖。
-
增强了灵活性:可以轻松地添加、删除或重新排列处理者,而无需修改请求发送方的代码。
-
提高了系统的可扩展性:新的处理者可以方便地加入到职责链中,以处理新的请求类型或扩展现有功能,符合开闭原则。
-
职责分离:每个处理者只关注自己的处理逻辑,职责明确,易于维护和理解。
-
-
缺点
-
不能保证请求一定被处理:在纯的职责链模式中,如果所有处理者都无法处理请求,可能会导致请求无人处理;在不纯的模式中,如果控制不当,也可能出现请求被遗漏的情况。
-
可能导致性能问题:如果职责链过长,请求的传递和处理可能会带来一定的性能开销。
-
如果建链不当,可能会造成循环调用,将导致系统陷入死循环。
-
4.职责链模式的适用场景
-
审批流程:如请假申请、费用报销审批等,不同级别的人员按照一定顺序进行审批。
-
工作流处理:在复杂的业务流程中,如订单处理流程,包括下单、库存检查、支付、发货等环节,每个环节由不同的处理者负责。
-
消息过滤和处理:在消息中间件中,对不同类型、优先级或来源的消息进行过滤和处理。
-
任务分配:将任务按照一定规则分配给不同的处理者,每个处理者根据自身条件决定是否接受并处理任务。
以上内容为根据书本内容配合搜索引擎整理得来,目的是为了学习,要是有侵权的情况发生,请联系我,我会立即予以删除,谢谢!
一起成长,人生是马拉松,可以跑得慢,但一定要在路上。