责任模式链如何与装饰模式不同??
答案 0 :(得分:10)
我通常认为Decorator是“添加”某些东西,其中责任链更像是处理某事物。
在比较两种模式(除了苹果和橙子)之外,最大的区别是责任链可以在任何时候杀死链条。
将装饰器视为一个分层单元,其中每个层始终进行前/后处理。责任链更像是一个链表,通常有一件事处理。
责任链模式允许多个事物处理事件,但它也使他们有机会在任何时候终止链。
答案 1 :(得分:7)
场景:
考虑服务请求(通常是对您的笔记本电脑的管理员访问权限),需要经理,总监和副总裁批准。在这种情况下,Decorator模式就好像在每个级别只会有来自每个级别的注释,最后你会得到一个输出。因此,经理会说'已批准并转发',Simlarly董事'Ok Approved并转发',最后VP'批准'。而你的最终输出将是所有3条评论的组合。
注意:无论您的请求被批准还是已拒登,链条都不会中断。
在责任链中,在每个阶段,个人都有权批准或拒绝。如果在任何级别请求被拒绝,那么您的请求不会进入下一级别,而只是以结果终止。希望这会有所帮助:)