首頁 » 設計模式 » 責任鏈(Chain of Responsibility)

責任鏈(Chain of Responsibility)

作者:

分類:

責任鏈(Chain of Responsibility)

概念

責任鏈模式是一種行為型模式,目的是將各種處理過程的物件串接起來,並順著責任鏈依次完成任務。概念類似於資料結構的鏈結串列(Linked List),每個物件中會帶有下一個物件的指標,當物件處理完成後,會指向下一個物件繼續執行直到完成為止。

範例

//**************
//* author: cian
//* 20231104
//**************

/* Abstract base */
abstract class WorkBase
{
    private readonly WorkBase nextWork = null;

    public WorkBase() { }

    public WorkBase(WorkBase _nextWork)
    {
        nextWork = _nextWork;
    }

    public void Excute()
    {
        Action();
        if (nextWork != null)
        {
            nextWork.Excute();
        }
    }

    protected abstract void Action();
}

class Work1 : WorkBase
{
    public Work1() { }

    public Work1(WorkBase _nextWork) : base(_nextWork) { }

    protected override void Action()
    {
        Console.WriteLine("Do Work 1.");
    }
}

class Work2 : WorkBase
{
    public Work2() { }

    public Work2(WorkBase _nextWork) : base(_nextWork) { }

    protected override void Action()
    {
        Console.WriteLine("Do Work 2.");
    }
}

class Work3 : WorkBase
{
    public Work3() { }

    public Work3(WorkBase _nextWork) : base(_nextWork) { }

    protected override void Action()
    {
        Console.WriteLine("Do Work 3.");
    }
}

class MainApp
{
    static void Main(string[] args)
    {
        Work1 work = new Work1(     //Do Work 1.
                     new Work2(     //Do Work 2.
                     new Work3())); //Do Work 3.
        work.Excute();
    }
}

結語

責任鏈模式將處理過程做成單一物件,應用鏈結方式將資料流串接,如果要加新的流程只要把流程重新組合即可。

以上為學習過程的問題紀錄
如果文章有誤,歡迎前輩留言請不吝指教。

「cian」的個人頭像

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *