责任链VS案例陈述

时间:2015-12-10 14:42:31

标签: design-patterns

当我读到责任链时,它讨论了将客户端与数据的实际处理分开。 所以它说客户端程序调用链的第一个成员,并确定它是否可以处理它,如果可以,它会处理它,如果不能,它会调用链的下一个成员,依此类推。 我已经读过可以将其他成员添加到链中,并且客户端程序不必实际更改以处理它。 我在示例中看到的,包括Wiki,是客户端必须实例化链中的每个成员,甚至为链的每个成员设置后继。 当链中对象的顺序由客户端确定并且客户端甚至必须实例化链中的每个对象时,如何将其视为松散耦合?

1 个答案:

答案 0 :(得分:1)

Chain of Responsibility比案例陈述更灵活。最重要的是,CoR可以:

  

在没有硬连线处理程序关系的情况下处理请求   优先级或请求到处理程序映射。

意味着任何数量的处理程序都可以响应请求,并且它们不需要在链中连续。

  

处理程序对象的数量和类型不是先验已知的,它们可以   动态配置。

意味着可以在运行时添加新的处理程序,并且可以重新排序现有的处理程序。

更基本的答案是case语句是procedural结构,因此通常不用于面向对象的编程,例如Gang of Four设计模式。