《左耳听风》 学习笔记 day28

130 阅读2分钟

大家好,我是砸锅。一个摸鱼八年的后端开发。熟悉 Go、Lua。今天和大家一起学习架构😊

责任链模式是一种行为设计模式,它可以避免请求发送者与多个请求处理者耦合在一起,让多个对象都有机会处理该请求,从而避免请求的发送者和接收者之间的耦合关系。

责任链模式包含如下主要角色:- 抽象处理者(Handler)角色:定义一个处理请求的接口,含有 successor 指向其后继的抽象处理者。- 具体处理者(Concrete Handler)角色:实现抽象处理者接口,判断并处理它所负责的请求,可访问其后继者。- 请求(Request)角色:需要被处理的请求。

责任链模式有以下主要优点:1. 降低耦合度。发送者与接收者间的耦合关系被绊断,两个对象不再直接引用彼此。2. 增强系统的灵活性。通过动态配置或重排责任链,允许自由地向系统中添加或删除处理者。   3. 增强系统扩展性。可以非常方便地加入新的处理者来处理那些原有对象无法处理的请求。4. 责任的分配。可以明确地定义每个接收对象处理的具体请求,让每个对象只需要关注其负责的任务。但是,责任链模式也有一定的缺点:1. 调试难度加大。由于一个请求需要穿过整条责任链,难以确定链上哪个对象造成了错误。2. 性能问题。在责任链过长的情况下,性能可能会有所下降。3. 可能导致循环调用。如果责任链中含有环形结构,会产生循环调用,必须避免这种情况的出现。

责任链模式在JAVA中的典型应用就是异常处理机制。我们可以通过try/catch块建立一个异常处理的责任链,依据异常的类型在各个catch块中处理异常。另外,许多业务场景也使用了责任链模式,比如:审批流程的设计、网站访问过滤机制的实现等。它们都是非常典型的责任链模式应用。总之,当有多个对象都有可能处理某个请求,而指定哪个对象处理该请求又取决于具体情况时,责任链模式是一个比较好的选择。

此文章为4月Day22学习笔记,内容来源于极客时间《左耳听风》 这门课真的非常好,推荐大家看看