公司的对外邮箱,每天都收到大量的邮件,于是一个伟大的任务就落到你头上了。
你需要清理掉垃圾邮件,应聘的邮件发给招聘部门,客户邮件发给服务部门……
这些邮件分发规则很可能会增加。

于是你写下了类似这样的代码:

4.11 《硬啃设计模式》 第28章 邮件自动处理系统?- 责任链模式(Chain of Responsibility Pattern)... 

每一种情况就是一种规则,如何才能“包装”好这些规则,使之容易组合和扩展呢?
责任链模式精要之处就是将所有规则抽象成责任,通过责任链来组合规则并且可以实现扩展。

应用了责任链模式的设计如下:

4.11 《硬啃设计模式》 第28章 邮件自动处理系统?- 责任链模式(Chain of Responsibility Pattern)... 

说明:
1.每个Handler只做自己判断,如果能自己处理,就自己处理,否则交给下一个Handler处理。
2.如果增加新规则,则增加新的Handler便可。

责任链模式类图

4.11 《硬啃设计模式》 第28章 邮件自动处理系统?- 责任链模式(Chain of Responsibility Pattern)... 

要根据不同的情况处理请求时,可考虑责任链模式。
责任链模式将请求发送者与请求处理者分离,并且可以安排多个请求者处理请求。

各Handler的关系如下:

4.11 《硬啃设计模式》 第28章 邮件自动处理系统?- 责任链模式(Chain of Responsibility Pattern)... 
下载 (18.58 KB)
2009-10-28 11:19


说明:
1.Client构造合适的Handler结构。

2.Client将请求传递给合适的第一个Handler。


请看下一文……

 

 

作者:张传波

创新工场创业课堂(敏捷课程)讲师

软件研发管理资深顾问

CMMI首席专家

《火球——UML大战需求分析》作者

www.umlonline.org创办人