责任链模式和装饰器模式有何不同?
责任链模式和装饰器模式有何不同?
我通常认为装饰器模式是对某个东西进行“添加”,而责任链模式更像是处理某个东西。
除了装饰器模式和责任链模式之间有些不同(就像是苹果和橙子),最大的区别在于,责任链模式可以在任何时候中断链。
将装饰器视为层次单元,每个层次始终进行前/后处理。责任链更像是一个链接列表,通常只有一个单元处理整个过程。
责任链模式允许多个单元处理事件,但也给它们终止链的机会。
情景:
想象一下一个服务请求(通常是要求管理员访问您的笔记本电脑),需要经过您的经理、总监和副总裁的批准。在这种情况下,装饰者模式会像每个级别都有他们的评论一样运作,最终您将得到一个输出。因此,经理会说“已批准并转发”,同样的,总监会说“好的,已批准并转发”,最后副总裁会说“已批准”。而您的最终输出将是这3个评论的组合。
注意:无论您的请求是否被批准或拒绝,该链都不会中断。
在职责链模式中,每个阶段的个人都有权批准或拒绝。如果在任何级别上请求被拒绝,则您的请求不会继续到下一级,而是以结果终止。希望这可以帮到你 :)