责任链模式与装饰者模式有何不同?
发布于 2010-09-16 03:57:52
我通常认为装饰者是对一些东西的“添加”,而作为响应链更像是处理一些东西。
在比较这两种模式时(除了苹果和橙子之外),最大的区别是责任链可以在任何时候杀死链。
可以把装饰器看作是一个分层的单元,在这个单元中,每一层都会进行预处理/后处理。责任链更像是一个链表,通常由一件事来处理。
责任链模式允许多个事物处理一个事件,但它也让它们有机会在任何时候终止链。
发布于 2016-01-11 19:54:47
场景:
考虑一个服务请求(通常是对您笔记本电脑的管理员访问权限),该请求需要得到您的经理、总监和副总裁的批准。在这种情况下,Decorator pattern的行为就好像在每个级别上都有来自它们的注释,最后你会得到一个输出。因此,经理会说“批准并转发”,简单地说是主管“批准并转发”,最后是副总裁“批准”。您的最终输出将是所有3条评论的组合。
注意:无论您的请求是被批准还是不被批准,链都不会断开。
在责任链中,在每个阶段,个人都有权批准或拒绝。如果在任何级别上请求被拒绝,那么您的请求不会继续到下一级别,而只是终止并返回结果。希望这能有所帮助:)
https://stackoverflow.com/questions/3721256
复制相似问题