国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

神碼ai智能寫作網(wǎng)站百度怎么發(fā)帖做推廣

神碼ai智能寫作網(wǎng)站,百度怎么發(fā)帖做推廣,萬能瀏覽器官方免費版,做跨境電商的血淚教訓(xùn)文章目錄 現(xiàn)實實例反例優(yōu)化異步職責(zé)鏈 職責(zé)鏈模式在 C# 中是常見的,他的定義是:使多個對象都有機會處理請求,從而避免發(fā)送者和請求者之間的耦合關(guān)系,將對象連成一條鏈并傳遞該請求,直到有一個對象處理它為止 現(xiàn)實實例…

文章目錄

    • 現(xiàn)實實例
    • 反例
    • 優(yōu)化
    • 異步職責(zé)鏈

職責(zé)鏈模式在 C# 中是常見的,他的定義是:使多個對象都有機會處理請求,從而避免發(fā)送者和請求者之間的耦合關(guān)系,將對象連成一條鏈并傳遞該請求,直到有一個對象處理它為止

現(xiàn)實實例

上公交車要把硬幣遞給后排的售票員(現(xiàn)在應(yīng)該不常見了)運氣好第一個人就是售票員,負(fù)責(zé)要一直傳遞直到找到售票員

請求發(fā)送者只知道鏈中的第一個節(jié)點弱化了發(fā)送者和接受者之間的強聯(lián)系,如果不使用職責(zé)鏈模式,我們只能知道誰是售票員,才能把硬幣給他

反例

假設(shè)你正在開發(fā)一個在線購物網(wǎng)站,其中有一個訂單處理系統(tǒng)。在該系統(tǒng)中,訂單需要經(jīng)過一系列的驗證和處理步驟,包括庫存檢查、支付驗證、優(yōu)惠券驗證和物流處理

如果是一個程序員新手他有可能實現(xiàn)這樣的代碼,每個步驟都硬編碼在里面,難以擴展和優(yōu)化:

public class OrderProcessor
{public void ProcessOrder(Order order){// 庫存檢查bool stockAvailable = CheckStock(order);if (!stockAvailable){Console.WriteLine("庫存不足");return;}// 支付驗證bool paymentValidated = ValidatePayment(order);if (!paymentValidated){Console.WriteLine("支付驗證失敗");return;}// 優(yōu)惠券驗證bool couponValidated = ValidateCoupon(order);if (!couponValidated){Console.WriteLine("優(yōu)惠券驗證失敗");return;}// 物流處理ProcessShipping(order);}private bool CheckStock(Order order){// 檢查庫存邏輯// ...}private bool ValidatePayment(Order order){// 支付驗證邏輯// ...}private bool ValidateCoupon(Order order){// 優(yōu)惠券驗證邏輯// ...}private void ProcessShipping(Order order){// 物流處理邏輯// ...}
}public class Order
{// 訂單數(shù)據(jù)// ...
}

優(yōu)化

這是使用職責(zé)鏈模式優(yōu)化的代碼,把請求解耦分給不同的 Handler 執(zhí)行,并通過設(shè)置 Next Handler 找到下一個職責(zé)任務(wù),這就拆分了不同的執(zhí)行節(jié)點,變得可擴展了

public abstract class OrderHandler
{protected OrderHandler NextHandler;public void SetNextHandler(OrderHandler handler){NextHandler = handler;}public abstract void ProcessOrder(Order order);
}public class StockCheckHandler : OrderHandler
{public override void ProcessOrder(Order order){bool stockAvailable = CheckStock(order);if (!stockAvailable){Console.WriteLine("庫存不足");return;}if (NextHandler != null){NextHandler.ProcessOrder(order);}}private bool CheckStock(Order order){// 檢查庫存邏輯// ...}
}public class PaymentValidationHandler : OrderHandler
{public override void ProcessOrder(Order order){bool paymentValidated = ValidatePayment(order);if (!paymentValidated){Console.WriteLine("支付驗證失敗");return;}if (NextHandler != null){NextHandler.ProcessOrder(order);}}private bool ValidatePayment(Order order){// 支付驗證邏輯// ...}
}public class CouponValidationHandler : OrderHandler
{public override void ProcessOrder(Order order){bool couponValidated = ValidateCoupon(order);if (!couponValidated){Console.WriteLine("優(yōu)惠券驗證失敗");return;}if (NextHandler != null){NextHandler.ProcessOrder(order);}}private bool ValidateCoupon(Order order){// 優(yōu)惠券驗證邏輯// ...}
}public class ShippingHandler : OrderHandler
{public override void ProcessOrder(Order order){// 物流處理邏輯// ...}
}// 在客戶端代碼中構(gòu)建職責(zé)鏈
public class Client
{public void Main(){OrderHandler stockCheckHandler = new StockCheckHandler();OrderHandler paymentValidationHandler = new PaymentValidationHandler();OrderHandler couponValidationHandler = new CouponValidationHandler();OrderHandler shippingHandler = new ShippingHandler();stockCheckHandler.SetNextHandler(paymentValidationHandler);paymentValidationHandler.SetNextHandler(couponValidationHandler);couponValidationHandler.SetNextHandler(shippingHandler);OrderProcessor orderProcessor = new OrderProcessor(stockCheckHandler);Order order = new Order();orderProcessor.ProcessOrder(order);}
}public class OrderProcessor
{private OrderHandler _orderHandler;public OrderProcessor(OrderHandler orderHandler){_orderHandler = orderHandler;}public void ProcessOrder(Order order){_orderHandler.ProcessOrder(order);}
}public class Order
{// 訂單數(shù)據(jù)// ...
}

異步職責(zé)鏈

每個具體的處理器類都可以異步執(zhí)行相應(yīng)的任務(wù),并將結(jié)果傳遞給下一個處理器。通過使用異步職責(zé)鏈模式,將注冊過程的不同步驟解耦并異步處理,提高性能響應(yīng)速度

public abstract class RegistrationHandler
{protected RegistrationHandler NextHandler;public void SetNextHandler(RegistrationHandler handler){NextHandler = handler;}public abstract Task<bool> ProcessAsync(RegistrationRequest request);
}public class UsernameValidationHandler : RegistrationHandler
{public override async Task<bool> ProcessAsync(RegistrationRequest request){// 驗證用戶名是否有效await Task.Delay(1000); // 模擬異步操作bool isValid = !string.IsNullOrEmpty(request.Username);Console.WriteLine("Username validation completed");// 將結(jié)果傳遞給下一個處理器if (NextHandler != null){return await NextHandler.ProcessAsync(request) && isValid;}return isValid;}
}public class EmailValidationHandler : RegistrationHandler
{public override async Task<bool> ProcessAsync(RegistrationRequest request){// 驗證電子郵件是否有效await Task.Delay(1000); // 模擬異步操作bool isValid = !string.IsNullOrEmpty(request.Email);Console.WriteLine("Email validation completed");// 將結(jié)果傳遞給下一個處理器if (NextHandler != null){return await NextHandler.ProcessAsync(request) && isValid;}return isValid;}
}public class AccountCreationHandler : RegistrationHandler
{public override async Task<bool> ProcessAsync(RegistrationRequest request){// 創(chuàng)建用戶賬戶await Task.Delay(1000); // 模擬異步操作bool isSuccess = true; // 假設(shè)賬戶創(chuàng)建成功Console.WriteLine("Account creation completed");// 將結(jié)果傳遞給下一個處理器if (NextHandler != null){return await NextHandler.ProcessAsync(request) && isSuccess;}return isSuccess;}
}
http://m.aloenet.com.cn/news/28671.html

相關(guān)文章:

  • 什么樣的網(wǎng)站需要icp經(jīng)營性備案產(chǎn)品市場營銷策劃書
  • 自己做網(wǎng)站需要買什么手機怎么建自己的網(wǎng)站
  • 企業(yè)網(wǎng)站建設(shè)定制南寧求介紹seo軟件
  • 做網(wǎng)站關(guān)鍵詞網(wǎng)絡(luò)營銷的效果是什么
  • 做網(wǎng)站的注意什么國內(nèi)最新消息新聞
  • 蚌埠哪里做網(wǎng)站站長權(quán)重
  • 南寧中小企業(yè)網(wǎng)站制作許昌seo公司
  • 管理網(wǎng)站開發(fā)教程semseo是什么意思
  • 百度網(wǎng)頁版在線使用網(wǎng)站整站優(yōu)化公司
  • 淘寶客怎么建網(wǎng)站網(wǎng)站后臺管理系統(tǒng)
  • 廣西城鄉(xiāng)和住房建設(shè)廳網(wǎng)站黃頁推廣
  • 網(wǎng)站主機和空間360搜索引擎地址
  • 洛陽網(wǎng)站建設(shè)首選洛陽銘信科技佛山seo按效果付費
  • 用帝國cms做網(wǎng)站2022年新聞?wù)畻l
  • 加工鋼球網(wǎng)架公司西安seo教程
  • wordpress站點logo設(shè)置河北疫情最新情況
  • 建設(shè)門戶網(wǎng)站的申請網(wǎng)站推廣是做什么的
  • 直播教育網(wǎng)站建設(shè)注冊網(wǎng)站平臺要多少錢
  • 什么網(wǎng)站可以做投票愛站查詢工具
  • 付費推廣網(wǎng)站網(wǎng)絡(luò)營銷論文題目
  • 建設(shè)銀行曲江支行網(wǎng)站優(yōu)化分析
  • 沒備案的網(wǎng)站怎么做淘客做百度推廣員賺錢嗎
  • 服裝網(wǎng)站建設(shè)進(jìn)度及實施過程百度營銷app
  • 怎么做網(wǎng)站管理系統(tǒng)寧波網(wǎng)站推廣方案
  • 撫州做網(wǎng)站的公司網(wǎng)站推廣系統(tǒng)方案
  • 寶安網(wǎng)站制作網(wǎng)站建設(shè)太原網(wǎng)站制作優(yōu)化seo公司
  • 怎么在網(wǎng)站上做簽到建設(shè)網(wǎng)站制作公司
  • 河南建設(shè)教育中心網(wǎng)站免費域名空間申請網(wǎng)址
  • 個人網(wǎng)站實例深圳優(yōu)化公司義高粱seo
  • 杭州做網(wǎng)站公司怎么制作網(wǎng)頁鏈接