設計模式(十二)責任鏈模式

2021-09-18 17:41:28 字數 2075 閱讀 6241

今天來看看什麼是責任鏈模式。責任鏈,從字面意思可以看出,不同的責任連起來,成為一條責任鏈,針對不同的情況,在這條鏈上尋找對應的處理辦法。

官方定義:使多個物件都有機會處理請求,從而避免了請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有物件處理它為止。

責任鏈模式的重點是在「鏈」上,由一條鏈去處理相似的請求,在鏈中決定誰來處理這個請求,並返回相應的結果。

以下是通用類圖:

在生活場景中,銀行會針對存入不同的貨幣做出不同的處理,以下我們就用這個例子來說明責任鏈的使用方式。

//某一種貨幣(人民幣、美元、歐元、日元)要求存入銀行,要處理這個請求

public final void handlemessage(imoney money) else else }}

//如果處理不了這個,告知下乙個處理人

public void setnext(bankhandler handler)

//有請求當然要回應

protected abstract void response(imoney money);

}

public class rmb extends bankhandler 

@override

protected void response(imoney money)

}

public class usd extends bankhandler 

@override

protected void response(imoney money)

}

public class eur extends bankhandler 

@override

protected void response(imoney money)

}

public class jpy extends bankhandler 

@override

protected void response(imoney money)

}

public class money implements imoney

}//獲得貨幣的型別

public int gettype()

//獲得貨幣的處理請求

public string getrequest()

}

public inte***ce imoney
public class client 

//定義四個請示物件

bankhandler rmb = new rmb();

bankhandler usd = new usd();

bankhandler eur = new eur();

bankhandler jpy = new jpy();

//設定處理順序

責任鏈模式非常顯著的優點是將請求和處理分開。請求者可以不用知道是誰處理的,處理者可以不用知道請求的全貌,兩者解耦,提高系統的靈活性。

設計模式之十二 責任鏈模式

定義 使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係,將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理他為止 業務場景 多個不同物件可以處理同乙個請求,具體由哪乙個物件處理,由業務規則動態確定。例如常見的流程審批 框架中的請示過濾等等。動物園來了 喂動物,對食...

JAVA設計模式(十二)設計模式之責任鏈設計模式

本章講解設計模式中責任鏈設計模式的相關知識 1.概念 試想下面的場景 某公司審批財務撥款購買裝置,小於10萬元的貨物由主任批示,大於10萬且小於100萬的貨物由經理批示,大於100萬的貨物由總經理批示。那麼如何實現這個邏輯呢?那麼我們首先想到的就是使用傳統的if.else來進行處理,但是對於業務複雜...

設計模式 責任鏈模式

定義 避免請求傳送者與接收者耦合在一起,讓多個物件都有可能接收請求,將這些請求連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止。例項 請假加薪審批 using system using system.collections.generic using system.text namespa...