Chain of Responsibility(职责链)---对象行为型模式

使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。

这一模式的想法是,给多个对象处理一个请求的机会,从而解耦发送者和接收者。该请求沿对象链传递直至其中一个对象处理它。从第一个对象开始,链中收到请求的对象要么亲自处理它,要么转发给链中的下一个候选者。提交请求的对象并不明确地知道哪一个对象将会处理它,我们说该请求有一个隐式的接收者。要沿链转发请求,并保证接收者为隐式的,每个在链上的对象都有一致的处理请求和访问链上后续者的接口。

在以下条件中使用Responsibility链:

1、有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。

2、你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。

3、可处理一个请求的对象集合应被动态指定。

Responsibility链的优点和缺点:

1、降低耦合度。该模式使得一个对象无需知道是其他哪一个对象处理其请求。对象仅需知道该请求会被“正确”地处理。接收者和发送者都没有对方的明确的信息,且链中的对象不需知道链的结构。

结果是,职责链可简化对象的相互连接。它们仅需保持一个指向其后续者的引用,而不需保持它所有的候选接受者的引用。

2、增强了给对象指派职责的灵活性。当在对象中分派职责时,职责链给你更多的灵活性。你可以通过在运行时刻对该链进行动态的增加或修改来增加或改变处理一个请求的那些职责。你可以将这种机制与静态的特例化处理对象的继承机制结合起来使用。

3、不保证被接受。既然一个请求没有明确的接收者,那么就不能保证它一定会被处理。该请求可能一直到链的末端都得不到处理。一个请求也可能因该链没有被正确配置而得不到处理。

猜你喜欢

转载自linshiquan.iteye.com/blog/1066665
今日推荐