用途
職責鍊模式 (Chain Of Responsibility)
使多個對象都有機會處理請求,進而避免請求的發送者和接收者之間的耦合關系。
将這個對象連成一條鍊,并沿着這條鍊傳遞該請求,直到有一個對象處理它為止。
職責鍊模式是一種行為型模式。
結構
圖-職責鍊模式
Handler : 定義一個處理請求的接口。(可選的)實作設定後繼者的方法。
<a></a>
abstract class Handler {
protected Handler successor;
public void SetSuccesssor(Handler successor) {
this.successor = successor;
}
public abstract void HandlerRequest(int request);
}
ConcreteHandler : 處理它所負責的請求,可以通路它的後繼者,如果可處理該請求,就處理之,否則就将請求轉發給它的後繼者。
class ConcreteHandler1 extends Handler {
@Override
public void HandlerRequest(int request) {
if (request >= 0 && request < 10) {
System.out.println("ConcreteHandler1 處理請求 " + request);
} else if (null != successor) {
successor.HandlerRequest(request);
}
class ConcreteHandler2 extends Handler {
if (request >= 10 && request < 20) {
System.out.println("ConcreteHandler2 處理請求 " + request);
class ConcreteHandler3 extends Handler {
if (request >= 20 && request < 30) {
System.out.println("ConcreteHandler3 處理請求 " + request);
Client : 需要設定一個職責鍊的各環節對象串聯起來。
public class ChainOfResponsibilityPattern {
public static void main(String[] args) {
Handler h1 = new ConcreteHandler1();
Handler h2 = new ConcreteHandler2();
Handler h3 = new ConcreteHandler3();
h1.SetSuccesssor(h2);
h2.SetSuccesssor(h3);
int[] requests = {2, 29, 9, 15, 4, 19};
for (int i : requests) {
h1.HandlerRequest(i);
本文轉自靜默虛空部落格園部落格,原文連結:http://www.cnblogs.com/jingmoxukong/p/4241496.html,如需轉載請自行聯系原作者