观察者和责任链
观察者和责任链也有些相同的地方: 就是观察者本身可以形成一个观察者链。
以dns解析器为例子:
责任链模式就是本地处理不了域名,就交给上一级,上一级处理不了就再往上,直至处理。 本地有上级,上级还有上级,组成一个责任链。
观察者模式就是, 自己处理不了就通知观察者。 本地dns服务器有观察者是上一级dns服务器,上一级还有观察者。
这两者的区别是:
- 责任链模式,在链中不会改变传递的消息对象本身。 而在观察者触发链中对象可以自由变化,只要上下级节点对传递对象了解即可。 它不要求链中的消息对象不变化。
- 上下节点的关系不同。 责任链中上下节点没有关系,都是接收同样的对象,不关心上一节点是什么,只需要按照自己的逻辑进行处理。 触发链中上下级关系亲密,上级信任下级。
- 消息的分销渠道不同。 责任链中 消息按链传递。 观察者触发链,消息传递是不固定的,因为是观察者模式,可以广播,也可以跳跃。