LindDotNetCore~职责链模式的应用

2019-12-16 作者:金沙贵宾会官方网址   |   浏览(93)

职责链格局

LindDotNetCore~职责链模式的应用。它是风流浪漫种设计模块,首要将操作流程与具体操作解耦,让种种操作都足以安装自个儿的操作流程,那对于专业流应用是一个科学的接纳!
下边是官方正式的概念:义务链方式是大器晚成种设计情势。在义务链情势里,非常多对象由种种指标对其下家的援用而连接起来产生一条链。央求在这里个链上传递,直到链上的某二个指标说了算拍卖此呼吁。发出这一个央浼的客户端并不知道链上的哪三个指标最后管理那些央浼,那使得系统能够在不影响顾客端的气象下动态地重复社团和抽成权利。

回去目录

LindDotNetCore~职责链模式的应用。LindDotNetCore~职责链模式的应用。职务链方式组成

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

    待续……
    回去目录

本文由金沙贵宾会官方网址发布于金沙贵宾会官方网址,转载请注明出处:LindDotNetCore~职责链模式的应用

关键词:

  • 上一篇:没有了
  • 下一篇:没有了