您好,登錄后才能下訂單哦!
詳解Python 中的責任鏈設計模式?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
定義:
使多個對象都有機會處理請求,從而避免請求的發送者和接受者之間的耦合關系。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求直到有一個對象處理它為止
使用場景:
有多個對象可以處理一個請求,哪個對象處理由時間運行時決定。在不明確接受者的情況下,向多個對象中的一個提交一個請求
優點:
降低耦合度:一個對象無需知道是其他哪一個對象處理其請求
代碼例子:
""" 責任鏈模式 """ 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 中的責任鏈設計模式的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。