定义:
使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系, 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止
业务场景:
多个不同对象可以处理同一个请求,具体由哪一个对象处理,由业务规则动态确定。例如常见的流程审批、框架中的请示过滤等等。
动物园来了:
喂动物,对食物肯定还是有要求的。比如要先检查是不是三无产品,再看看有没有营养,最后检测质量是否合格等等。这几个流程,可能由于动物、食物的不同而不同。此时就需要抽象检测动作,灵活组装,结合工厂,组成不同的责任链来完成不同食物的检测。
与装饰器模式的不同:
装饰器本质是对某一方法或接口的加强,强调的是在不破坏原有类的情况下派生新的方法。
责任链强调的是处理对象统一,动作统一,灵活组装等等。与加强、修饰等无关。虽然在特定情况下两者会表现出类似现象,但有本质不同。
责任链的几种写法:
个人对这些不感冒,略显无聊,欢迎评论区讨论。
以上