LindDotNetCore~职责链模式之运。LindDotNetCore~职责链模式的用。

回到目录,回到目录

归来目录

回来目录

任务链模式

她是千篇一律种植设计模块,主要用操作流程及具体操作解耦,让每个操作都可装好的操作流程,这对于工作流应用是一个毋庸置疑的选!
脚是法定正规的定义:责任链模式是同等种设计模式。在责任链模式里,很多靶由各一个对象对那下家的援而连接起来形成相同长条链子。请求于是链上传递,直到链上的某个一个目标说了算拍卖这个呼吁。发出之要的客户端并不知道链上的哪一个对象最终处理此请,这让系统可以在无影响客户端的图景下动态地再次组织和分红责任。

任务链模式

它是同等种植设计模块,主要用操作流程及具体操作解耦,让每个操作都可装好之操作流程,这对于工作流应用是一个科学的选项!
脚是官正规的定义:责任链模式是同一种设计模式。在责任链模式里,很多靶由各个一个对象对那下家的援而连接起来形成相同久链子。请求于此链上传递,直到链上的某个一个对象说了算拍卖者呼吁。发出之请的客户端并不知道链上的哪一个对象最终处理这请,这使系统可以在匪影响客户端的景下动态地更组织以及分红责任。

任务链模式组成

  1. 其三杀目标
  2. 指令处理
  3. 拍卖流程
  4. 命上下文

  5. 令才负责组织各个流程的先后,对流程实现细节无兴趣

  6. 现实流程就兑现协调关注的代码,对下一个流水线未知

    ####  在切切实实代码中的体现

    泛泛命令
    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"));
      }
      }
    

    待续……
    返目录

任务链模式组成

  1. 其三很目标
  2. 一声令下处理
  3. 拍卖流程
  4. 命令上下文

  5. 指令才担负组织各个流程的程序,对流程实现细节尚未兴趣

  6. 实际流程只兑现好关心的代码,对生一个流水线未知

    ####  在切实代码中之反映

    虚幻命令
    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"));
      }
      }
    

    待续……
    回来目录