4.11 《硬啃设计模式》 第28章 邮件自动处理系统?- 责任链模式(Chain of Responsibility Pattern)...
公司的对外邮箱,每天都收到大量的邮件,于是一个伟大的任务就落到你头上了。
你需要清理掉垃圾邮件,应聘的邮件发给招聘部门,客户邮件发给服务部门……
这些邮件分发规则很可能会增加。
于是你写下了类似这样的代码:
每一种情况就是一种规则,如何才能“包装”好这些规则,使之容易组合和扩展呢?
责任链模式精要之处就是将所有规则抽象成责任,通过责任链来组合规则并且可以实现扩展。
应用了责任链模式的设计如下:
说明:
1.每个Handler只做自己判断,如果能自己处理,就自己处理,否则交给下一个Handler处理。
2.如果增加新规则,则增加新的Handler便可。
责任链模式类图:
要根据不同的情况处理请求时,可考虑责任链模式。
责任链模式将请求发送者与请求处理者分离,并且可以安排多个请求者处理请求。
各Handler的关系如下:
说明:
1.Client构造合适的Handler结构。
你需要清理掉垃圾邮件,应聘的邮件发给招聘部门,客户邮件发给服务部门……
这些邮件分发规则很可能会增加。
于是你写下了类似这样的代码:
每一种情况就是一种规则,如何才能“包装”好这些规则,使之容易组合和扩展呢?
责任链模式精要之处就是将所有规则抽象成责任,通过责任链来组合规则并且可以实现扩展。
应用了责任链模式的设计如下:
说明:
1.每个Handler只做自己判断,如果能自己处理,就自己处理,否则交给下一个Handler处理。
2.如果增加新规则,则增加新的Handler便可。
责任链模式类图:
要根据不同的情况处理请求时,可考虑责任链模式。
责任链模式将请求发送者与请求处理者分离,并且可以安排多个请求者处理请求。
各Handler的关系如下:
说明:
1.Client构造合适的Handler结构。
2.Client将请求传递给合适的第一个Handler。
请看下一文……
作者:张传波
创新工场创业课堂(敏捷课程)讲师
软件研发管理资深顾问
CMMI首席专家
《火球——UML大战需求分析》作者
转载于:https://blog.51cto.com/fireball1975/1371891