簡說責任鏈模式

2021-08-15 04:33:40 字數 1236 閱讀 5948

在責任鏈模式中,抽象責任鏈定義了鏈式處理結構,具體的處理邏輯則由子類去實現。舉個例子:開發中,我們肯定會寫到邏輯判斷處理語句,如果需要進行邏輯判斷的情況很少,那麼幾個簡單的if else就足夠用了。但是,如果進行邏輯判斷的業務十分複雜,那麼單單乙個if判斷是很難處理的,即便是處理了,**也會閒的臃腫不堪。所以,責任鏈模式就派上用場了,每個邏輯判斷都自成一體,既能處理複雜業務邏輯同時也便於擴充套件。

能**塊

//責任鏈模式

public

class

test elseelse}}

public

void

setnexthandler(handler handler)

public

int number;

}//責任鏈實現a

class handlera extends handler

}//責任鏈實現b

class handlerb extends handler

}//責任鏈實現c

class handlerc extends handler

}//測試

public

static

void

main(string args)

}

: 以上就是責任鏈模式的完整**。handler抽象類定義了處理方法,以及後續處理類的查詢方法。子類:handlera,handlerb,handlerc構成鏈式的處理順序。在測試**中,我們分別對50,20,10這幾個數字進行判斷,結果顯示分別是:沒有合適的處理器,handlerc處理,handlerb處理。其實,這個責任鏈模式的處理流程,類似於資料結構中煉表的遍歷,而且開實際開發中,我們自定義的***的執行過程,也與責任鏈模式有著類似的結構。

優點降低耦合度。它將請求的傳送者和接收者解耦。

簡化了物件。使得物件不需要知道鏈的結構。

增強給物件指派職責的靈活性。通過改變鏈內的成員或者調動它們的次序,允許動態地新增或者刪除責任。

增加新的請求處理類很方便。 缺點

不能保證請求一定被接收。

系統效能將受到一定影響,而且在進行**除錯時不太方便,可能會造成迴圈呼叫。

可能不容易觀察執行時的特徵,有礙於除錯。

試用場景

有多個物件可以處理同乙個請求,具體哪個物件處理該請求由執行時刻自動確定。

在不明確指定接收者的情況下,向多個物件中的乙個提交乙個請求。

可動態指定一組物件處理請求。

簡說設計模式 職責鏈模式

從文字角度出發,我們可以先將關注點放在 鏈 字上,很容易聯想到鏈式結構,舉個生活中常見的例子,擊鼓傳花遊戲就是乙個很典型的鏈式結構,所有人形成一條鏈,相互傳遞。而從另乙個角度說,職責鏈就是所謂的多級結構,比如去醫院開具病假條,普通醫生只能開一天的證明,如果需要更多時常,則需將開具職責轉交到上級去,上...

責任鏈模式

責任鏈模式 chain of responsibility 的目標是使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞請求,直到有乙個物件處理它為止。舉個例子。你到銀行去辦理業務,只是簡單的存個錢,也許atm就解決你的問題。如果你是為了交費...

責任鏈模式

有3個request與3個handler,每個request由相應的handler來處理,當乙個handler與request不匹配時則傳遞給下乙個handler來處理 inte ce request class request1 implements request class request2 ...