职责链模式:让多个同族对象连接成一个有先后关系的链。然后根据自己条件决定是否处理请求,否则把请求按着链冒泡,只到有对象它为止。
例如:我的电脑坏了,我只认识it维修部门,我就给他电话处理。他收到我的请求后,看看事情的难易程度决定怎么处理。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
interface IChain { void HandleRequest(Level l); } enum Level { low, middle, high } class Manager:IChain { IChain pre; IChain next; public Manager(IChain p, IChain n) { pre = p; next = n; } /// <summary> /// 处理客户端请求。 /// </summary> /// <param name="l">请求种类</param> public void HandleRequest(Level l) { if (l==Level.low) { //I can do it. } else if(l==Level.middle) { next.HandleRequest(l); } else { pre.HandleRequest(l); } } } class TopManager:IChain { public void HandleRequest(Level l) { if (l==Level.high) { //I can do it } } } class LowManager:IChain { public void HandleRequest(Level l) { if (l==Level.low) { //i can do it } } } class Client { public void Run() { LowManager lm = new LowManager(); TopManager tm = new TopManager(); Manager m = new Manager(lm,tm); m.HandleRequest(Level.low); } }