定義:
使多個對象都有機會處理請求,從而避免請求的發送者和接受者之間的耦合關系。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求直到有一個對象處理它為止
使用場景:
有多個對象可以處理一個請求,哪個對象處理由時間運行時決定。在不明確接受者的情況下,向多個對象中的一個提交一個請求
優點:
降低耦合度:一個對象無需知道是其他哪一個對象處理其請求
代碼例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
""" 責任鏈模式 """ from abc import abstractmethod, ABCMeta class Handler(metaclass = ABCMeta): @abstractmethod def handler_leave( self , day): pass # 總經理審批 class GenaralHandler(Handler): def handler_leave( self , day): if day < = 10 : print ( '總經理批準你%s天假,好好去玩吧' % day) else : print ( '你干脆辭職了吧' ) # 部門經理審批 class DepartmentHandler(Handler): def __init__( self ): self .upHandler = GenaralHandler() def handler_leave( self , day): if day < = 7 : print ( '部門經理批準你%s天假,好好去玩吧' % day) else : print ( '你請假超過七天,我無權受理,你去找總經理吧' ) self .upHandler.handler_leave(day) # 項目主管審批 class ProjectHandler(Handler): def __init__( self ): self .upHandler = DepartmentHandler() def handler_leave( self , day): if day < = 3 : print ( '項目主管批準你%s天假,好好去玩吧' % day) else : print ( '你請假超過三天,我無權受理,你去找部門經理審批吧' ) self .upHandler.handler_leave(day) if __name__ = = '__main__' : h = ProjectHandler(); h.handler_leave( 5 ) |
輸出結果:
你請假超過三天,我無權受理,你去找部門經理審批吧
部門經理批準你5天假,好好去玩吧
以上就是淺析Python 責任鏈設計模式的詳細內容,更多關于Python 責任鏈設計模式的資料請關注服務器之家其它相關文章!
原文鏈接:https://www.link-nemo.com/u/10025/post/67349