Design Pattern— 責任鏈模式(Chain of Responsibility Pattern)

莊創偉
2 min readMay 8, 2020

--

維基說明

說明:包含命令對象與處理對象。各個處理對象僅專注於處理自己能處理的命令對象。優點:經由處理對像的簡單化,未來可以利於擴充與修改

假設小明週一到週日各要處理不同的事情。轉化為程式,大概會長這個樣子

if(today=="星期一"){
......
}
elseif (today=="星期二"){
......
}
.....

或者

switch(today){case "星期一":
.....
break;
case "星期二":
.....
break;
.......
}

這樣做的壞處是所有的條件都被綁住了,當隨著條件逐漸增加,維護難度會不斷提升,並且每次有異動都必須調整核心程式。
責任鍊模式就是為了改善處理條件互相依賴的情形,讓每個處理對象獨立並且簡單化。

責任鍊的做法是將每個條件都建成一個Class,並用一個鉤子一個帶著一個。

interface ITodayWorks{public ITodayWorks NextDay { get; set; }//存放下一個任務public string DoWork(DateTime today);//執行的任務}

首先定義一個簡單的介面,裡面有定義一個 NextDay 作為鉤子存放下一個鍊子,以及該執行的任務。

繼承並實作該介面後就可以把條件約束一個一個串起來

範例

--

--

莊創偉

學海無涯。但是為了生計還是得下海的風塵男子