职责链模式的应用

来源:http://www.goldns.net 作者:www.xpj68.com 人气:148 发布时间:2019-09-09
摘要:回去目录 职责链格局 它是一种设计模块,主要将操作流程与具体操作解耦,让每种操作都足以安装本人的操作流程,这对于专门的工作流应用是三个不错的选项! 上边是法定正规的定

回去目录

职责链格局

它是一种设计模块,主要将操作流程与具体操作解耦,让每种操作都足以安装本人的操作流程,这对于专门的工作流应用是三个不错的选项!
上边是法定正规的定义:义务链形式是一种设计情势。在职分链格局里,相当多目的由每三个对象对其下家的援用而连接起来产生一条链。乞请在那么些链上传递,直到链上的某叁个对象说了算拍卖此恳请。发出这些央求的客商端并不知道链上的哪贰个对象最后管理这么些伏乞,那使得系统可以在不影响客商端的景况下动态地重新协会和分配责任。

任务链形式组成

  1. 三大指标
  2. 一声令下处理
  3. 管理流程
  4. 一声令下上下文
  • 指令只承担协会各样流程的程序,对流程完结细节没兴趣
  • 具体流程只兑现本身关注的代码,对下贰个流水生产线未知

    ####  在具体代码中的展现

    抽象命令
    c# public interface ICommand { void Execute(CommandParameters parameters); }
    空洞流程

     /// <summary>
     /// 工作流-抽象处理者
     /// </summary>
     public abstract class WorkFlow
     {
     protected WorkFlow Next; // 定义后继对象
     protected object SharedObj;  // 共享对象
    
     // 设置后继者
     public WorkFlow SetNext(WorkFlow next)
     {
         Next = next;
         return next;
     }
    
     // 抽象请求处理方法
     public virtual void ProcessRequest(CommandParameters command)
     {
         if (Next != null)
             Next.ProcessRequest(command);
     }
     }
    

    一声令下须求把参数字传送递给种种工作流程

      public class CommandParameters
      {
      public string CommandType { get; set; }
      public string JsonObj { get; set; }
    
      public CommandParameters(string type, string jsonObj)
      {
          CommandType = type;
          JsonObj = jsonObj;
      }
      }
    

    上面看贰个任务链形式里的现实性命令和实际流程(步骤),每一个步骤能够安装它下一步是什么样

      public class CommandInsert : ICommand
      {
    
      public void Execute(CommandParameters parameters)
      {
          WorkFlow workFlow = new WorkFlow_InsertLogger();
          workFlow.SetNext(new WorkFlow_InsertAudit());
          workFlow.ProcessRequest(parameters);
      }
      }
      public class CommandUpdate : ICommand
      {
      public void Execute(CommandParameters parameters)
      {
          WorkFlow workFlow = new WorkFlow_InsertAudit();
          workFlow.SetNext(new WorkFlow_InsertLogger());
          workFlow.ProcessRequest(parameters);
      }
      }
      public class WorkFlow_InsertLogger : WorkFlow
      {
      public override void ProcessRequest(CommandParameters command)
      {
          System.Console.WriteLine("WorkFlow1");
          ProcessRequest(command);
      }
      }
      public class WorkFlow_InsertAudit : WorkFlow
      {
      public override void ProcessRequest(CommandParameters command)
      {
          System.Console.WriteLine("WorkFlow2");
          ProcessRequest(command);
      }
      }
      public class ChainResponsibility
      {
      [Fact]
      public void Test1()
      {
          var command = new CommandInsert();
          command.Execute(new CommandParameters("test", "OK"));
      }
    
      [Fact]
      public void Test2()
      {
          var command = new CommandUpdate();
          command.Execute(new CommandParameters("test", "OK"));
      }
      }
    

    待续……
    再次回到目录

本文由澳门新葡亰娱乐场发布于www.xpj68.com,转载请注明出处:职责链模式的应用

关键词:

上一篇:BPM实例分享

下一篇:没有了

频道精选

最火资讯