开发一个应用时,多数时候我们都能预先知道哪个方法能处理某个特定请求。然而,情况并非总是如此。例如,在广播计算机网络中,会将请求发送给所有节点,但仅对所发送内容感兴趣的节点会处理请求。
如果一个节点对某个请求不感兴趣或者不知道该如何处理这个请求,可以执行以下两个操作。
- 忽略这个请求,什么都不做
- 将请求转发给下一个节点
节点对一个请求的反应方式是实现的细节。然而,我们可以使用广播计算机网络来类比理解责任链模式是什么。责任链(Chain of Responsibility)模式用于让多个对象来处理单个请求时,或者用于预先不知道应该由哪个对象(来自某个对象链)来处理某个特定请求时。其原则如下
- 存在一个对象链(链表/树或任何其他便捷的数据结构)。
- 我们一开始将请求发送给链中的第一个对象。
- 对象决定其是否要处理该请求。
- 对象将请求转发给下一个对象。
- 重复该过程,直到到达链尾。<