淺析Python 責任鏈設計模式
阿新 • • 發佈:2020-09-14
定義:
使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求直到有一個物件處理它為止
使用場景:
有多個物件可以處理一個請求,哪個物件處理由時間執行時決定。在不明確接受者的情況下,向多個物件中的一個提交一個請求
優點:
降低耦合度:一個物件無需知道是其他哪一個物件處理其請求
程式碼例子:
""" 責任鏈模式 """ 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 責任鏈設計模式的資料請關注我們其它相關文章!