设计模式(三) 责任链模式
责任链模式为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。
在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。
因为最近在公司 O2O按路由规则派单的项目中 运用了 此模式 特此记录。
下面是简单的逻辑实现

1 public abstract class RouteBase 2 { 3 private RouteBase _NextRoute = null; 4 public void SetNextRoute(RouteBase routeBase) 5 { 6 _NextRoute = routeBase; 7 } 8 public abstract bool Route(); 9 /// <summary> 10 /// 路由规则 11 /// </summary> 12 public void RouteLink() 13 { 14 if (Route()) 15 { 16 return; 17 } 18 else 19 { 20 _NextRoute.RouteLink(); 21 } 22 } 23 }

1 public class SaleRoute : RouteBase 2 { 3 public override bool Route() 4 { 5 Console.WriteLine("A"); 6 // 处理逻辑 最后判断 是否需要跳到下一个规则处理 7 return false; 8 } 9 }

1 public class StockRoute : RouteBase 2 { 3 public override bool Route() 4 { 5 Console.WriteLine("b"); 6 // 处理逻辑 最后判断 是否需要跳到下一个规则处理 7 return true; 8 } 9 }

1 RouteBase a = new SaleRoute(); 2 RouteBase b = new StockRoute(); 3 a.SetNextRoute(b); 4 a.RouteLink(); 5 6 Console.Read();
在使用时,要灵活应变,根据业务需求变换代码的结构,也可以将Routelink()方法设置为抽象的,让子类各自实现自己的规则。
分类:
设计模式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY