预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C#面向对象设计模式纵横谈 20.ChainofResponsibility职责链(行 为型模式) 李建忠 jianzhong.lee@gmail.com 设计模式论坛: forum.softcompass.com 上海祝成科技高级培训讲师 www.softcompass.com 请求的发送者与接受者 某些对象请求的接受者可能多种多样,变化无常…… 动机(Motivation) 在软件构建过程中,一个请求可能被多个对象处 理,但是每个请求在运行时只能有一个接受者,如 果显式指定,将必不可少地带来请求发送者与接受 者的紧耦合。 如何使请求的发送者不需要指定具体的接受者?让 请求的接受者自己在运行时决定来处理请求,从而 使两者解耦。 意图(Intent) 使多个对象都有机会处理请求,从而避免请求的发送 者和接收者之间的耦合关系。将这些对象连成一条 链,并沿着这条链传递请求,直到有一个对象处理它 为止。 ——《设计模式》GoF 例说ChainofResponsibility应用 CodesinVS.NET 结构(Structure) ChainofResponsibility模式 的几个要点 •ChainofResponsibility模式的应用场合在于“一个请求可 能有多个接受者,但是最后真正的接受者只有一个”,只 有这时候请求发送者与接受者的耦合才有可能出现“变化 脆弱”的症状,职责链的目的就是将二者解耦,从而更好 地应对变化。 •应用了ChainofResponsibility模式后,对象的职责分派 将更具灵活性。我们可以在运行时动态添加/修改请求的 处理职责。 •如果请求传递到职责链的末尾仍得不到处理,应该有一个 合理的缺省机制。这也是每一个接受对象的责任,而不是 发出请求的对象的责任 推荐资源 •《设计模式:可复用面向对象软件的基础》GoF •《面向对象分析与设计》GradyBooch •《敏捷软件开发:原则、模式与实践》RobertC.Martin •《重构:改善既有代码的设计》MartinFowler •《RefactoringtoPatterns》JoshuaKerievsky 获取更多MSDN资源 •MSDN中文网站 http://www.microsoft.com/china/msdn •MSDN中文网络广播 http://www.msdnwebcast.com.cn •MSDNFlash http://www.microsoft.com/china/newsletter/case/ msdn.aspx •MSDN开发中心 http://www.microsoft.com/china/msdn/Developer Center/default.mspx Question&Answer 如需提出问题,请单击“提问”按钮并在 随后显示的浮动面板中输入问题内容。一 旦完成问题输入后,请单击“提问”按钮。