职责链模式
来源:互联网 发布:网络大电影制作 编辑:程序博客网 时间:2024/06/05 10:02
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,指导有一个对象处理为止。
当客户提交一个请求时,请求沿着链传递直至有一个ConcreteHandler对象负责处理它。
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(); } } 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) { Console.WriteLine("{0} 处理请求 {1}", this.GetType().Name, request); } else if (successor != null) { successor.HandleRequest(request); } } } class ConcreteHandler2 : Handler { public override void HandleRequest(int request) { if (request >= 10 && request < 20) { Console.WriteLine("{0} 处理请求 {1}", this.GetType().Name, request); } else if (successor != null) { successor.HandleRequest(request); } } } class ConcreteHandler3 : Handler { public override void HandleRequest(int request) { if (request >= 20 && request < 30) { Console.WriteLine("{0} 处理请求 {1}", this.GetType().Name, request); } else if (successor != null) { successor.HandleRequest(request); } } }
0 0
- 职责链设计模式
- 职责链模式
- 职责链模式
- 职责链模式
- ChainOfResponsibility(职责链)模式
- 职责链模式ChainOfResponsibility
- 职责链模式
- 职责链模式 ResponsibilityChainPattern
- 【设计模式】职责链
- 职责链模式
- java职责链模式
- 职责链模式
- 职责链模式
- 职责链模式(python)
- 职责链模式
- 职责链模式
- 职责链模式
- 职责链模式
- 行为型模式之职责链模式(Chain of responsibility)
- 蓝桥杯 格子中输出
- 多生产者多消费者实例
- Android Studio 2.3.1 安装中遇到的几个问题
- Java多线程机制
- 职责链模式
- 关于自定义dialog
- Mybatis3.x与Spring4.x整合
- DB9串行接口
- Where is the Marble? -UVA 10474
- 动态规划初步( 01 背包、完全背包、多重背包)
- 产品研发
- 算法设计方法:递归的内涵与经典应用
- NBUT