責任鏈模式(chain) 員工請假

2021-07-09 13:37:16 字數 1347 閱讀 2548

定義:

責任鏈模式是物件的行為模式,在責任鏈模式裡,很多物件由每乙個物件對其下家的引用而鏈結起來形成一條鏈,請求在這個鏈上傳遞,直到鏈上的某乙個物件決定處理此請求。發出這個請求的客戶端並不知道哪乙個物件處理此請求,這使得系統在不影響客戶端的情況下動態的重新組織和分配責任。

角色列表:

抽象處理者角色(handler):定義出乙個處理請求的介面或者抽象類,如果需要,介面可以定義出乙個方法以設定和返回對下家的引用。抽象方法規範了子類處理請求的操作。

具體處理者角色(concretehandler):具體處理者接到請求後,可以選擇將請求處理掉,或者將請求傳給下家。由於具體處理者持有對下家的引用,如果條件滿足,具體處理者可以訪問下家。

例子:

養牛場工人請假,小組長有1天的審批許可權,如果大於1天小於3天,車間主任可以審批,如果大於3天,總經理有審批許可權。

類圖如下:

**如下:

public abstract class handler 

/**

* 設定handler

* @param handler handler

*/public void sethandler(handler handler)

}public class teamleader extends handlerelse }}

public class deptleader extends handler else }

}public class manager extends handler

}public class client

}

執行結果如下:

純的責任鏈模式與不純的責任鏈模式:

乙個純的責任鏈模式要求乙個具體的處理者物件只能在兩個行為中選擇乙個,要麼處理,要麼不處理將責任傳給下家,不允許出現處理了一部分然後再將責任傳遞給下家繼續處理的情況,在純的責任鏈模式裡,乙個請求必須被乙個具體處理者物件所處理,在不純的責任鏈模式裡,請求可以最終不被具體處理者處理。

優點:

客戶端不需要知道具體由誰來處理請求,也不需要了解處理者物件的結構,降低了客戶端與處理者物件的耦合。

責任chain模式

class basehandler 它起到了鏈的作用 def successor self,successor self.successor successor class scorehandler1 basehandler def handle self,request if request 90...

python 設計模式 chain鏈模式

鏈模式chain,可以將乙個處理流程串成乙個鏈,每一環包括三部分 1 初始化中,需要指向傳入的類,2 有判斷呼叫傳入類的method 3 有自己這一環需要做的處理 abstractmethon 還有乙個約束,應該是終止環 class 這一環僅有第三項,需要做的處理,表明沒有找到合適的環。示例 cla...

乙個請假案例弄懂責任鏈模式

1 什麼是責任鏈模式?定義 將能夠處理同一類請求的物件連成一條鏈,所提交的請求沿著鏈傳遞,鏈上的物件逐個判斷是否有能力處理該請求,如果能處理則處理,如果不能則傳遞給鏈上的下乙個物件。2 應用場景?場景 打牌時輪流出牌 接力賽跑 大學中,獎學金審批 公司中公文審批 3 uml類圖描述,以生活當中我們請...