24 设计模式教学课件

上传人:痛*** 文档编号:244127381 上传时间:2024-10-02 格式:PPT 页数:18 大小:168.50KB
返回 下载 相关 举报
24 设计模式教学课件_第1页
第1页 / 共18页
24 设计模式教学课件_第2页
第2页 / 共18页
24 设计模式教学课件_第3页
第3页 / 共18页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,职责链(,Chain of Responsibility,)模式,从击鼓传花谈起,击鼓传花是一种热闹而又紧张的饮酒游戏。在酒宴上宾客依次坐定位置,由一人击鼓,击鼓的地方与传花的地方是分开的,以示公正。开始击鼓时,花束就开始依次传递,鼓声一落,如果花束在某人手中,则该人就得饮酒。,击鼓传花便是职责链模式的应用。职责链可能是一条直线、一个环链或者一个树结构的一部分。,实例,公司申请聚餐费用,公司申请差旅费用,问题,聚餐费用申请的处理流程是可能会变动的,各个处理环节的业务处理也是会变动的,问题抽象,客户端发出一个请求,会有很多对象都可以来处理这个请求,而且不同对象的处理逻辑是不一样的。对于客户端而言,无所谓谁来处理,反正有对象处理就可以了。而且在上述处理中,还希望处理流程是可以灵活变动的,而处理请求的对象需要能方便地修改或者是被替换掉,以适应新的业务功能的需要,,解决方案,职责链(,Chain of Responsibility,)模式,使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。,解决问题的思路,动态构建流程步骤,这样随时可以重新组合出新的流程来,抽象处理者,(Handler),角色:,定义出一个处理请求的接口。如果需要,接口可以定义出一个方法,以设定和返回对下家的引用。这个角色通常由一个抽象类或接口实现。,具体处理者,(ConcreteHandler),角色:,具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。由于具体处理者持有对下家的引用,因此,如果需要,具体处理者可以访问下家。,处理过程,Chain of Responsibility,模式中,ConcreteHandler,将自己的后继对象(向下传递消息的对象)记录在自己的后继表中,当一个请求到来时,,ConcreteHandler,会先检查看自己有没有匹配的处理程序,如果有就自己处理,否则传递给它的后继。,示意代码,abstract class Handler,protected Handler successor;,public void SetSuccessor(Handler successor),this.successor=successor;,public abstract void HandleRequest(int request);,class ConcreteHandler1:Handler,public override void HandleRequest(int request),if(request=0&request=10&request=20&request 30),Console.WriteLine(0,处理请求,1,this.GetType().Name,request);,else if(successor!=null),successor.HandleRequest(request);,客户端,class Program,static void Main(string args),Handler h1=new ConcreteHandler1();,Handler h2=new ConcreteHandler2();,Handler h3=new ConcreteHandler3();,h1.SetSuccessor(h2);,h2.SetSuccessor(h3);,int requests=2,5,14,22,18,3,27,20;,foreach(int request in requests),h1.HandleRequest(request);,Console.Read();,在客户端,设置关联,责任链模式降低了请求的发送端和接收端之间的耦合,使多个对象都有机会处理这个请求。一个链可以是一条线,一个树,也可以是一个环。如下图所示,责任链是一个树结构的一部分。,优点:,请求者和接收者松散耦合,动态组合职责,缺点:,产生很多细粒度对象,不一定能被处理,需要提供默认处理,本质,分离职责,动态组合,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!