国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

重溫設(shè)計模式 --- 責(zé)任鏈模式

這篇具有很好參考價值的文章主要介紹了重溫設(shè)計模式 --- 責(zé)任鏈模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

引言

責(zé)任鏈模式是一種行為型設(shè)計模式,它通過一條由多個處理器組成的鏈來處理請求,每個處理器都有機會處理請求,如果一個處理器不能處理該請求,它會將請求傳遞給下一個處理器,直到請求被處理為止。

在實際應(yīng)用中,責(zé)任鏈模式常用于處理請求的分發(fā)、事件處理等場景,它的優(yōu)點在于可以動態(tài)地添加、刪除處理器,從而靈活地處理請求。

下面使用C#實現(xiàn)的簡單責(zé)任鏈模式的示例:

抽象處理器類

public abstract class Handler
{
    protected Handler successor; //下一個處理器

    public void SetSuccessor(Handler successor)
    {
        this.successor = successor;
    }

    public abstract void HandleRequest(int request);
}

處理器實現(xiàn)

//具體處理器類1
public class ConcreteHandler1 : Handler
{
    public override void HandleRequest(int request)
    {
        if(request >= 0 && request < 10)
        {
            Console.WriteLine("{0} handled request {1}", this.GetType().Name, request);
        }
        else if(successor != null)
        {
            successor.HandleRequest(request);
        }
    }
}

//具體處理器類2
public class ConcreteHandler2 : Handler
{
    public override void HandleRequest(int request)
    {
        if(request >= 10 && request < 20)
        {
            Console.WriteLine("{0} handled request {1}", this.GetType().Name, request);
        }
        else if(successor != null)
        {
            successor.HandleRequest(request);
        }
    }
}

//具體處理器類3
public class ConcreteHandler3 : Handler
{
    public override void HandleRequest(int request)
    {
        if(request >= 20 && request < 30)
        {
            Console.WriteLine("{0} handled request {1}", this.GetType().Name, request);
        }
        else if(successor != null)
        {
            successor.HandleRequest(request);
        }
    }
}

客戶端調(diào)用

//客戶端程序
class Client
{
    static void Main(string[] args)
    {
        //構(gòu)造處理器鏈
        Handler h1 = new ConcreteHandler1();
        Handler h2 = new ConcreteHandler2();
        Handler h3 = new ConcreteHandler3();
        h1.SetSuccessor(h2);
        h2.SetSuccessor(h3);

        //處理請求
        int[] requests = { 2, 5, 14, 22, 18, 3, 27, 20 };

        foreach (int request in requests)
        {
            h1.HandleRequest(request);
        }

        Console.ReadKey();
    }
}

在這個示例中,我們定義了一個抽象處理器類Handler和三個具體處理器類ConcreteHandler1、ConcreteHandler2ConcreteHandler3。在客戶端程序中,我們構(gòu)造了一個處理器鏈,將h1的下一個處理器設(shè)置為h2,將h2的下一個處理器設(shè)置為h3。然后我們循環(huán)處理請求數(shù)組中的每個請求,每個請求都從h1開始處理。如果一個處理器能夠處理該請求,它就會處理該請求并結(jié)束;否則它會將請求傳遞給下一個處理器,直到請求被處理或者沒有更多的處理器為止。

結(jié)論

使用責(zé)任鏈模式的好處在于,我們可以隨時增加、刪除處理器,而不需要修改客戶端程序的代碼。

責(zé)任鏈模式也有一些缺點。例如,如果處理器鏈太長,會降低處理請求的效率;如果處理器之間的依賴關(guān)系不清楚,可能會導(dǎo)致處理器重復(fù)處理請求或者無法處理請求。因此,在使用責(zé)任鏈模式時需要慎重考慮,根據(jù)實際情況選擇合適的處理器鏈長度和處理器之間的依賴關(guān)系。文章來源地址http://www.zghlxwxcb.cn/news/detail-548642.html

到了這里,關(guān)于重溫設(shè)計模式 --- 責(zé)任鏈模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 重溫設(shè)計模式 --- 觀察者模式

    觀察者模式 是一種行為型設(shè)計模式,它允許對象之間建立一種一對多的關(guān)系,使得當(dāng)一個對象狀態(tài)改變時,所有依賴它的對象都能夠自動得到通知并更新自己的狀態(tài)。該模式可以幫助我們實現(xiàn)松耦合的系統(tǒng),以便更好地應(yīng)對變化和擴展。 在觀察者模式中,有兩個角色: 觀察

    2024年02月13日
    瀏覽(21)
  • 重溫設(shè)計模式系列 --- 完整精華篇

    軟件開發(fā)過程中,我們經(jīng)常會遇到各種設(shè)計問題,例如如何管理對象之間的關(guān)系、如何優(yōu)化代碼的可復(fù)用性和可維護性等等。為了解決這些問題,我們可以使用設(shè)計模式。 設(shè)計模式是一種被廣泛接受的軟件設(shè)計思想,它提供了一套通用的解決方案,可以幫助我們更好地解決常

    2024年02月13日
    瀏覽(49)
  • 《設(shè)計模式》責(zé)任鏈模式

    《設(shè)計模式》責(zé)任鏈模式

    定義 : 責(zé)任鏈模式將鏈中每一個節(jié)點都看成一個對象,并且將這些節(jié)點對象連成一條鏈,請求會沿著這條鏈進行傳遞,直到有對象處理它為止,這使得多個對象都有機會接收請求,避免了請求發(fā)送者和接收者之間的耦合。 屬于 行為型 設(shè)計模式。 責(zé)任鏈模式的角色組成 :

    2024年02月13日
    瀏覽(16)
  • 設(shè)計模式——責(zé)任鏈模式

    設(shè)計模式——責(zé)任鏈模式

    使多個對象都有機會處理請求,從而避免了請求的發(fā)送者和接收者之間的耦合關(guān)系。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,知道有對象處理它為止。 優(yōu)點 能將請求和處理分開。請求者可以不用知道是誰處理的,處理者可以不用知道請求的全貌,兩者解耦提高系

    2024年02月15日
    瀏覽(17)
  • 設(shè)計模式—責(zé)任鏈模式

    設(shè)計模式—責(zé)任鏈模式

    一、待解決問題 : 減少代碼中 if else 語句,降低代碼圈復(fù)雜度或深度,增強可讀性。 1、需求背景: 采購訂單創(chuàng)建,需要驗證采購員、物料、供應(yīng)商、供應(yīng)商的銀行賬號等信息。如采購員權(quán)限到期、或供應(yīng)商失效等問題,都無法下單。 2、代碼如下: 學(xué)習(xí)使用責(zé)任鏈模式后

    2024年02月10日
    瀏覽(19)
  • 設(shè)計模式:責(zé)任鏈模式

    責(zé)任鏈模式(Chain of Responsibility Pattern)是一種行為型設(shè)計模式,它允許多個對象按照順序處理請求,直到其中一個對象能夠處理該請求為止。責(zé)任鏈模式將請求發(fā)送者和接收者解耦,使得多個對象都有機會處理請求,同時避免了請求發(fā)送者與接收者之間的直接耦合關(guān)系。 在

    2024年02月07日
    瀏覽(20)
  • 【設(shè)計模式】責(zé)任鏈模式

    【設(shè)計模式】責(zé)任鏈模式

    顧名思義,責(zé)任鏈模式(Chain of Responsibility Pattern)為請求創(chuàng)建了一個接收者對象的鏈。這種模式給予請求的類型,對請求的發(fā)送者和接收者進行解耦。這種類型的設(shè)計模式屬于行為型模式。 在這種模式中,通常每個接收者都包含對另一個接收者的引用。如果一個對象不能處

    2024年02月12日
    瀏覽(20)
  • 設(shè)計模式-責(zé)任鏈模式

    遇到一個面試的場景題目,讓實現(xiàn)稅率的計算 請使用Java語言實現(xiàn)如下稅率計算: 1~5000 稅率 0 5001~8000 3% 8001~17000 10% 17001~30000 20% 30001~40000 25% 40001~60000 30% 60001~85000 35% 85001~ 45% 要求 ⅰ. 邏輯正確,代碼優(yōu)雅 ⅱ. 可擴展性,考慮區(qū)間的變化,比如說起征點從5000變成10000等等,或者

    2024年02月11日
    瀏覽(23)
  • 說說設(shè)計模式~責(zé)任鏈模式

    說說設(shè)計模式~責(zé)任鏈模式

    回到目錄 它是一種設(shè)計模塊,主要將操作流程與具體操作解耦,讓每個操作都可以設(shè)置自己的操作流程,這對于工作流應(yīng)用是一個不錯的選擇! 下面是官方標(biāo)準(zhǔn)的定義:責(zé)任鏈模式是一種設(shè)計模式。在責(zé)任鏈模式里,很多對象由每一個對象對其下家的引用而連接起來形成一

    2024年02月11日
    瀏覽(21)
  • 設(shè)計模式——22. 責(zé)任鏈模式

    責(zé)任鏈模式是一種行為設(shè)計模式,它允許你創(chuàng)建一個對象鏈,每個對象都包含了請求的一部分處理邏輯,并且請求按照鏈的順序依次傳遞,直到有一個對象處理它為止。責(zé)任鏈模式通常用于將一個請求從發(fā)送者傳遞給多個接收者,直到有一個接收者處理請求為止。 責(zé)任鏈模式

    2024年02月07日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包