日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

LindDotNetCore~职责链模式的应用

發布時間:2025/3/8 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LindDotNetCore~职责链模式的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

回到目錄

職責鏈模式

它是一種設計模塊,主要將操作流程與具體操作解耦,讓每個操作都可以設置自己的操作流程,這對于工作流應用是一個不錯的選擇!
下面是官方標準的定義:責任鏈模式是一種設計模式。在責任鏈模式里,很多對象由每一個對象對其下家的引用而連接起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某一個對象決定處理此請求。發出這個請求的客戶端并不知道鏈上的哪一個對象最終處理這個請求,這使得系統可以在不影響客戶端的情況下動態地重新組織和分配責任。

職責鏈模式組成

  • 三大對象
  • 命令處理
  • 處理流程
  • 命令上下文
    • 命令只負責組織各個流程的次序,對流程實現細節沒興趣
    • 具體流程只實現自己關注的代碼,對下一個流程未知

     在具體代碼中的體現

    抽象命令

    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~职责链模式的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。