責任鏈可以使得系統在不影響客戶端的前提下動態的安排責任鏈和分配責任。責任鏈模式中包含的角色有抽象處理者,具體處理者以及請求的傳送者。責任鏈可以是一條直線,乙個環鏈甚至乙個樹結構。它使得每乙個具體的訊息處理者都有可能處理訊息。
/**
* 抽象的請求處理者
* @author wly
* */
public abstract class filter
/**
* 具體處理者a
* @author wly
* */
public class filtera extends filter
}
/**
* 具體處理者b
* @author wly
* */
public class filterb extends filter
}
/**
* 具體處理者c
* @author wly
* */
public class filterc extends filter
}
/**
* 責任鏈中的「鏈"
* @author wly
* */
public class filterchain extends arraylist
public string dofilter(string s)
return s;
}}
/**
* 客戶端類
* @author wly
* */
public class test
}
輸出:(今天),c,$
其實,上面的**並不是真正的責任鏈,因為具體的處理者應該可以選擇將請求繼續往下傳遞還是自己直接處理掉。不過,我們可以拿android中的touch事件的傳遞來做例子。當乙個view捕獲到乙個ontouch事件後,就可以通過ontouch的返回智決定是否繼續把事件往它的父級view傳遞。
設計模式 責任鏈模式
定義 避免請求傳送者與接收者耦合在一起,讓多個物件都有可能接收請求,將這些請求連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止。例項 請假加薪審批 using system using system.collections.generic using system.text namespa...
設計模式 責任鏈模式
責任鏈模式 chain ofresponsibility pattern 基本概念 責任鏈,顧名思義,是指乙個負責相應請求的行為鏈。首先要理解的是乙個鏈,然後通過這個鏈來管理個行為。什麼時候會用到責任鏈 對於乙個請求,沒有特別指明由誰處理或沒有指明如何處理。此時可以使用責任鏈的形式,用過將各種處理行...
設計模式 責任鏈模式
定義 使多個物件都有機會處理請求,從而避免了請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條連傳遞該請求,直到有物件處理它為止。使用場景 多個物件可以處理同一請求,單具體由哪個物件處理則在執行時決定 在請求處理這不明確的情況下向多個物件提交乙個請求 需要動態指定一組物件處理請求 ...