Observer观察者模式和Chain Of Responsibility职责链模式有什么区别?

不是导演李安 2009-12-31 12:10:05
RT。

我感觉职责链模式包含观察者模式。谢谢各位大侠解答
...全文
328 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xsmm2010 2010-04-21
  • 打赏
  • 举报
回复
职责链与观察者在功能上十分相似,甚至基本没有区别。

它们不同更多的是一种人为的规定。它们都是将消息源与接受者解耦。职责链也可以设计成让所有感兴趣的接收者都处理,而不是只有一个人。至于职责链的次序也是可以动态改变的,因此并不构成它与观察者区别的本质特征。

它们真正的区别是:一个是推模式,一个是拉模式,仅此而已。
CACACACACA 2010-02-02
  • 打赏
  • 举报
回复
简单说点:

职责链是在链上找需要自己的处理的,自己不处理的传给一个。

而观察一般情况下是---注册的都要收到通知。
不是导演李安 2010-01-06
  • 打赏
  • 举报
回复
谢谢楼上回复。
我的想法是,如果职责链模式写特殊一点。当判断出此步骤可以执行时,仍然按照指针传递到下一个链接,直到整个链接全部遍历完成。这不就是观察者模式吗?
这是我的小小的疑问。
hityct1 2010-01-04
  • 打赏
  • 举报
回复
我也是菜鸟。没看出职责链模式包含观察者模式。
观察者模式就像订阅报纸,读者(即观察者)在报社(被观察者)登记订阅报纸,有了新报纸,报社就根据登记表将报纸发送给读者。虽然必然有一个发送顺序,但不强调必须按这个顺序。
职责链模式就像看病,病人到社区医院看病,如果社区的医生诊断不出病情,就将病人转给上一级医院,如果上一级的医院也诊断不出病因,就将病人转给更上一级,直到有医生诊断出病因。这个过程强调“顺序”。


观察者模式需要把信息通知被观察者,而职责链模式却未必,有能处理的,就不用传给下一个处理者了。

不是导演李安 2010-01-04
  • 打赏
  • 举报
回复
这个版块来的人太少了。来了能回答问题的人就更少了。希望高手能多光顾这个版块。呵呵

3,405

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 设计模式
社区管理员
  • 设计模式
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧