責任鏈模式: 責任鏈的核心是通過模板方法定義處理請求,從而使多個物件都有機會處理請求,避免請求與傳送者和接受者之間的耦合關係,並將這些物件串成一條鏈在這個鏈上有機會處理請求;
由此可見,責任鏈的關鍵在於模板方法,以及next物件,如何處理這個鏈,是否處理四個關鍵要素
其核心**如下:呼叫時可以採用另外乙個類定義chain結構【設定next】,鏈上第乙個節點呼叫template,從而啟動鏈式處理
public abstart class chainelseelse }}
public abstart boolean ifprocess(request request);
public abstart void process(request request);
}
責任鏈的優點是封裝了業務處理,解耦請求傳送者和處理接受者,同時鏈節點之間解耦了請求處理業務,實現單一職責原則
責任鏈的缺點是遍歷鏈式呼叫,存在效能問題,遞迴過深出現棧溢位
比如第三方支付,支付對接多個銀行,責任鏈可以處理決定對接哪個銀行
另外,責任鏈模式可以有很多變種,變種的關鍵在於模板方法的定義:比如增加反向邏輯,讀者可以思考其他擴充套件
public void bobizandsend(t datafrommq) catch (exception e)
}else catch (exception e)
}if(next != null && transfer)
}public abstract boolean shouldprocess(t datafrommq);
protected abstract void ifdobiz(t datafrommq);
/*** 反向業務邏輯補充
* @param datafrommq
*/protected abstract void ifnotbiz(t datafrommq);
設計模式 責任鏈模式
定義 避免請求傳送者與接收者耦合在一起,讓多個物件都有可能接收請求,將這些請求連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止。例項 請假加薪審批 using system using system.collections.generic using system.text namespa...
設計模式 責任鏈模式
責任鏈可以使得系統在不影響客戶端的前提下動態的安排責任鏈和分配責任。責任鏈模式中包含的角色有抽象處理者,具體處理者以及請求的傳送者。責任鏈可以是一條直線,乙個環鏈甚至乙個樹結構。它使得每乙個具體的訊息處理者都有可能處理訊息。抽象的請求處理者 author wly public abstract cl...
設計模式 責任鏈模式
責任鏈模式 chain ofresponsibility pattern 基本概念 責任鏈,顧名思義,是指乙個負責相應請求的行為鏈。首先要理解的是乙個鏈,然後通過這個鏈來管理個行為。什麼時候會用到責任鏈 對於乙個請求,沒有特別指明由誰處理或沒有指明如何處理。此時可以使用責任鏈的形式,用過將各種處理行...