为什么使用 chain of responsibility模式

1 意图:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象能处理该请求为止。

2:为何使用?

       这个模式,确实是看起来容易,但准确理解却很困难,很多时候我们其实更应该使用表模式而不是它。关于这一点 在总结中会在具体说一说。回到原题吧,A  解耦 请求的发送者与接受者,使发送者不需要知道太多的接受者信息。B 职责分担,运行时到底有谁来处理 这一动态决定的职责,放到 “职责相同的一组对象”里来处理,由他们来决定谁最适合处理请求。

3:总结

    1: 关于该模式 我一直不敢写,原因是我始终感觉自己对本模式的理解似乎有问题,在网上也找了很对帖子 但基本上没有人能够说清楚,很多都是人云亦云。用怪怪的话说“拉拉手就是职责链模式吗?” 应该是表模式才更合适。

    2:那使用本模式的场景是什么呢?怪怪好像没明确回答,或者在文章里已经回来了。我说一下自己的理解 可能不对 “处理请求是动态决定的,处理的入口 是有外在输入决定的。”

    3: 我也反复看了怪怪的文章 才对模式有了至少不明显错误的理解。但表达不清楚使用本模式的场景。具体的理解大家可以参看 http://www.cnblogs.com/guaiguai/archive/2008/02/18/1071753.html

    

   

posted @ 2009-01-03 15:22  wangok  阅读(322)  评论(0编辑  收藏  举报