18

责任链模式与装饰者模式有何不同...?

4

2 回答 2

26

我通常认为装饰器是对某事的“添加”,而责任链更像是处理某事。

在比较两种模式(除了苹果和橙子)时,最大的区别是责任链可以在任何时候杀死链。

将装饰器视为一个分层单元,其中每一层总是进行前/后处理。责任链更像是一个链表,一般1个东西处理处理。

责任链模式允许多个事物来处理一个事件,但它也让它们有机会在任何时候终止链。

于 2010-09-15T19:57:51.557 回答
13

设想:

考虑一个服务请求(通常是对您的笔记本电脑的管理员访问权限),该请求需要得到您的经理、主管和副总裁的批准。在这种情况下,装饰器模式的行为就像在每个级别上都会有来自每个级别的评论,最后你会得到一个输出。因此,经理会说“已批准并转发”,同样,主管会说“好的,已批准并转发”,最后是副总裁“已批准”。您的最终输出将是所有 3 条评论的组合。

注意:无论您的请求被批准还是不批准,链条都不会中断。

在责任链中,在每个阶段,个人都有权批准或拒绝。如果在任何级别请求被拒绝,那么您的请求不会进入下一个级别,而是以结果终止。希望这可以帮助 :)

于 2016-01-11T11:54:46.627 回答