国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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é)任鏈模式的評論 (共 條)

分享到微博請遵守國家法律
宜宾县| 金门县| 武清区| 永城市| 丰都县| 澄迈县| 长汀县| 北票市| 启东市| 保定市| 开远市| 武陟县| 泊头市| 拜泉县| 康马县| 平阴县| 屏东县| 潮安县| 新巴尔虎左旗| 蕲春县| 铁岭县| 玉门市| 荆州市| 旅游| 济阳县| 西华县| 米泉市| 岱山县| 梓潼县| 张家川| 苏州市| 新化县| 庄浪县| 岐山县| 手游| 江阴市| 汝南县| 从江县| 新和县| 贡嘎县| 离岛区|