设计模式学习笔记--Chain Of Responsibility 职责链模式

设计模式学习笔记--Chain Of Responsibility 职责链模式

ID:38684964

大小:37.85 KB

页数:6页

时间:2019-06-17

设计模式学习笔记--Chain Of Responsibility 职责链模式_第1页
设计模式学习笔记--Chain Of Responsibility 职责链模式_第2页
设计模式学习笔记--Chain Of Responsibility 职责链模式_第3页
设计模式学习笔记--Chain Of Responsibility 职责链模式_第4页
设计模式学习笔记--Chain Of Responsibility 职责链模式_第5页
资源描述:

《设计模式学习笔记--Chain Of Responsibility 职责链模式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、职责链模式是一种对象的行为模式【GOF95】。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。  引入职责链模式的目的仍然是为了解除耦合,从“封装变化”的角度出发,它封装了“职责行为的变化”,同时又利用链结构保证了消息的传递,此模式的优势在于它能够“智能”地根据条件在职责链中定位到合适的对象,并执行其职能。   职责链模式的UML图如下:           

2、                 责任链模式涉及到的角色如下所示:   1、抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法,以设定和返回对下家的引用。这个角色通常由一个抽象类或接口实现。   2、具体处理者(ConcreteHandler)角色:具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。由于具体处理者持有对下家的引用,因此,如果需要,具体处理者可以访问下家。  下面,我们还是用代码来说明。  程序如下图:                                 一、职责链模式的基本思路 

3、1、抽象处理者(Handler)角色:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MyChainResponsibility{    abstract  class Handler    {        //定义一个设置下一个处理者的接口        protected Handler _successor;        public void SetSuccessor(Handler sucessor)       

4、 {            this._successor = sucessor;        }        //定义一个处理信息的接口        public abstract void HandleRequest(int request);    }} 2、具体处理者(ConcreteHandler)角色using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MyChainResponsibility{    第一个处理者

5、    第二个处理者    第三个处理者} 3、客户端应用            #region 基本思路示例            Console.WriteLine("-------基本思路示例----------");            Handler h1 = new ConcreteHandlerOne();            Handler h2 = new ConcreteHandlerTwo();            Handler h3 = new ConcreteHandlerThree();            //设置责任链 

6、           h1.SetSuccessor(h2);            h2.SetSuccessor(h3);            int[] requests = {2,5,21,22,18,26,89};            foreach (int request in requests)            {                //责任处理                h1.HandleRequest(request);            }            Console.ReadKey();      

7、      #endregion   二、关于办公室发票报销的职责链处理模式  办公室的发票,根据它们的金额大小分别由科长,处长,局长逐级负责审阅报批,职责链处理流程从科长到处长再到局长。代码如下 1、抽象处理者(Handler)角色:ApproveHandler.using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MyChainResponsibility{    abstract  class ApproveHandler   

8、 {        #r

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。