职责链模式是一个对象A向另一个对象B发起请求,如果B不处理,可以把请求转给C,如果C不处理,又可以把请求转给D。一直到有一个对象愿意处理这个请求为止。

打个比方,客户让老板写个php程序。老板肯定不写,然后老板交给了部门经理。部门经理不愿意写,又交给项目经理。项目经理不会写,又交给程序员。最后由码农来完成。

在这个假设里, 有几条职责链模式的特点。

1 老板只跟部门经理打交道,部门经理只联系项目经理,项目经理只找码农的麻烦。
2 如果码农也不写,这个项目将会流产。
3 客户并不清楚这个程序最后是由谁写出来的。
js中的事件冒泡就是作为一个职责链来实现的。一个事件在某个节点上被触发,然后向根节点传递, 直到被节点捕获。

[目录]

原创文章转载请注明:

转载自AlloyTeam:http://www.alloyteam.com/2012/10/commonly-javascript-design-patterns-duty-chain/

  1. lyc 2014 年 7 月 25 日

    2012年的文章额?汗

  2. lyc 2014 年 7 月 25 日

    来个例子撒

  3. 【Javascript设计模式10】-模版方法模式 | Tencent AlloyTeam 2012 年 10 月 25 日

    […] 职责链模式 […]

  4. 【Javascript设计模式14】-备忘录模式 | Tencent AlloyTeam 2012 年 10 月 25 日

    […] 职责链模式 […]

发表评论