五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

設(shè)計模式之責(zé)任鏈模式

2020-08-20 13:21 作者:Ushua  | 我要投稿

什么是責(zé)任鏈模式

? ? ? ? 避免請求發(fā)送者與接收者耦合在一起,讓多個對象都有可能接收請求,將這些對象連接成一條鏈,并且沿著這條鏈傳遞請求,直到有對象處理它為止。職責(zé)鏈模式是一種對象行為型模式。

? ? ? ?設(shè)想一個場景,需要對一批從客戶端來的數(shù)據(jù)進(jìn)行不同的操作,我們使用多個不同的類負(fù)責(zé)不同的操作,而不是使用一個類集成所有操作,這樣做能讓代碼松耦合且簡潔。

? ? ? ?這些類被稱為處理器,第一個處理器會接收請求,如果它需要執(zhí)行操作則會進(jìn)行一次調(diào)用,如果不需要則會將請求傳遞給第二個處理器。類似地,第二個處理器確認(rèn)并將請求傳遞給責(zé)任鏈中的下一個處理器。如下圖為責(zé)任鏈模式的UML圖,Handler為抽象的處理類,其中有對象successor,為此類的處理類的引用,指向下一個具體處理類。handleRequest為處理方法。HandlerA與HandlerB分別為抽象類的實(shí)現(xiàn),具體處理類。Client調(diào)用整個處理器的調(diào)用鏈,它的職責(zé)是實(shí)例化一個處理器的鏈,讓后在第一個對象中調(diào)用handleRequest方法。

抽象責(zé)任鏈UML類圖


? ? ? 例如下圖中采購單的流轉(zhuǎn)過程,當(dāng)采購單的金額小于5萬時,主任進(jìn)行審核;當(dāng)采購單的金額介于5~10萬之間是,副董事長審核;當(dāng)采購單金額在10~50萬之間是,董事長審核;當(dāng)金額大于50萬時,董事會進(jìn)行討論審核。? ? ? ?

采購單審批流


責(zé)任鏈模式有什么作用

責(zé)任鏈模式可以讓處理器按以下方式處理:如果需要則處理請求,否則將請求傳遞給下一個處理器。

現(xiàn)有場景:需要根據(jù)不同的活動類型對商品價格進(jìn)行失效處理。UML類圖如下:AbstractActivityInvalidItemHandler為抽象類,IidInvalidItem、BrandUidInvalidItem、EventIdInvalidItem為三個實(shí)現(xiàn)類。



商品失效價格UML類圖


責(zé)任鏈模式在實(shí)際開發(fā)中的應(yīng)用

AbstractActivityInvalidItemHandler?

抽象handler類


BrandUidInvalidItem?

商家uid和品牌bid失效


EventIdInvalidItem

活動eventId維度失效


IidInvalidItem

單品iid維度失效


invalidRelateItemByRuleType

具體使用責(zé)任鏈client



設(shè)計模式之責(zé)任鏈模式的評論 (共 條)

分享到微博請遵守國家法律
商洛市| 三台县| 宣化县| 泸水县| 陆丰市| 汝城县| 万荣县| 绥化市| 德清县| 长葛市| 门头沟区| 驻马店市| 察隅县| 循化| 盐山县| 桦南县| 灌阳县| 项城市| 贡山| 达尔| 广安市| 侯马市| 阳西县| 忻城县| 泰来县| 黄大仙区| 黔西县| 武山县| 正定县| 凤阳县| 永德县| 开远市| 昌黎县| 汉中市| 日土县| 天祝| 自贡市| 同仁县| 温泉县| 苗栗市| 安吉县|