设计模式(三) 责任链模式
责任链模式为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。
在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。
因为最近在公司 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()方法设置为抽象的,让子类各自实现自己的规则。