GoF——职责链模式
2016-04-08 08:53
411 查看
职责链模式(chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
结构图:
View Code
2016-04-08
结构图:
using System; using System.Collections.Generic; using System.Text; namespace 职责链模式 { 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); } } } }
View Code
2016-04-08
相关文章推荐
- Django REST framework教程一:序列化
- Unicode UTF-8与GB18030编码解析(golang)
- Google Test(GTest)使用方法和源码解析——死亡测试技术分析和应用
- Google Test(GTest)使用方法和源码解析——模板类测试技术分析和应用
- GooglePlayServicesClient找不到
- Google Test(GTest)使用方法和源码解析——参数自动填充技术分析和应用
- Google Test(GTest)使用方法和源码解析——自定义输出技术的分析和应用
- Google Test(GTest)使用方法和源码解析——预处理技术分析和应用
- Google Test(GTest)使用方法和源码解析——断言的使用方法和解析
- Google Test(GTest)使用方法和源码解析——Listener技术分析和应用
- Google Test(GTest)使用方法和源码解析——结果统计机制分析
- Google Test(GTest)使用方法和源码解析——自动调度机制分析
- Google Test(GTest)使用方法和源码解析——概况
- django 1.8 日志配置
- Django模板中的复数显示及国际化
- 在visual studio 2013下使用Google Mock
- Google推荐的图片加载库Glide介绍
- Django中的Model(字段) - 第五轻柔的code - 博客园
- [HDU 4855] Goddess (极角排序+三分)
- Django中的Model(操作表) - 第五轻柔的code - 博客园