淺析Python 責任鏈設計模式
定義:
使多個對象都有機會處理請求,從而避免請求的發(fā)送者和接受者之間的耦合關系。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求直到有一個對象處理它為止
使用場景:
有多個對象可以處理一個請求,哪個對象處理由時間運行時決定。在不明確接受者的情況下,向多個對象中的一個提交一個請求
優(yōu)點:
降低耦合度:一個對象無需知道是其他哪一個對象處理其請求
代碼例子:
"""
責任鏈模式
"""
from abc import abstractmethod, ABCMeta
class Handler(metaclass=ABCMeta):
@abstractmethod
def handler_leave(self, day):
pass
# 總經(jīng)理審批
class GenaralHandler(Handler):
def handler_leave(self, day):
if day <= 10:
print('總經(jīng)理批準你%s天假,好好去玩吧' % day)
else:
print('你干脆辭職了吧')
# 部門經(jīng)理審批
class DepartmentHandler(Handler):
def __init__(self):
self.upHandler = GenaralHandler()
def handler_leave(self, day):
if day <= 7:
print('部門經(jīng)理批準你%s天假,好好去玩吧' % day)
else:
print('你請假超過七天,我無權受理,你去找總經(jīng)理吧')
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('你請假超過三天,我無權受理,你去找部門經(jīng)理審批吧')
self.upHandler.handler_leave(day)
if __name__ == '__main__':
h = ProjectHandler();
h.handler_leave(5)
輸出結(jié)果:
你請假超過三天,我無權受理,你去找部門經(jīng)理審批吧
部門經(jīng)理批準你5天假,好好去玩吧
以上就是淺析Python 責任鏈設計模式的詳細內(nèi)容,更多關于Python 責任鏈設計模式的資料請關注腳本之家其它相關文章!
相關文章
Python MySQL數(shù)據(jù)庫基本操作及項目示例詳解
這篇文章主要介紹了Python連接MySQL數(shù)據(jù)庫后的一些基本操作,并以銀行管理系統(tǒng)項目為例,為大家具體介紹了一下部分功能的實現(xiàn),文中的示例代碼具有一定的學習價值,感興趣的可以了解一下2021-12-12
python+requests+pytest接口自動化的實現(xiàn)示例
這篇文章主要介紹了python+requests+pytest接口自動化的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04
Python 編碼處理-str與Unicode的區(qū)別
本文主要介紹Python 編碼處理的問題,這里整理了相關資料,并詳細說明如何處理編碼問題,有需要的小伙伴可以參考下2016-09-09

