设计模式(三) 责任链模式

责任链模式为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。

在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。

因为最近在公司 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()方法设置为抽象的,让子类各自实现自己的规则。

原文地址:https://www.cnblogs.com/jasonbourne3/p/11150612.html