淺析Python 責(zé)任鏈設(shè)計(jì)模式
定義:
使多個(gè)對象都有機(jī)會處理請求,從而避免請求的發(fā)送者和接受者之間的耦合關(guān)系。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求直到有一個(gè)對象處理它為止
使用場景:
有多個(gè)對象可以處理一個(gè)請求,哪個(gè)對象處理由時(shí)間運(yùn)行時(shí)決定。在不明確接受者的情況下,向多個(gè)對象中的一個(gè)提交一個(gè)請求
優(yōu)點(diǎn):
降低耦合度:一個(gè)對象無需知道是其他哪一個(gè)對象處理其請求
代碼例子:
""" 責(zé)任鏈模式 """ 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)理批準(zhǔn)你%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)理批準(zhǔn)你%s天假,好好去玩吧' % day) else: print('你請假超過七天,我無權(quán)受理,你去找總經(jīng)理吧') self.upHandler.handler_leave(day) # 項(xiàng)目主管審批 class ProjectHandler(Handler): def __init__(self): self.upHandler = DepartmentHandler() def handler_leave(self, day): if day <= 3: print('項(xiàng)目主管批準(zhǔn)你%s天假,好好去玩吧' % day) else: print('你請假超過三天,我無權(quán)受理,你去找部門經(jīng)理審批吧') self.upHandler.handler_leave(day) if __name__ == '__main__': h = ProjectHandler(); h.handler_leave(5)
輸出結(jié)果:
你請假超過三天,我無權(quán)受理,你去找部門經(jīng)理審批吧
部門經(jīng)理批準(zhǔn)你5天假,好好去玩吧
以上就是淺析Python 責(zé)任鏈設(shè)計(jì)模式的詳細(xì)內(nèi)容,更多關(guān)于Python 責(zé)任鏈設(shè)計(jì)模式的資料請關(guān)注腳本之家其它相關(guān)文章!
- Python使用設(shè)計(jì)模式中的責(zé)任鏈模式與迭代器模式的示例
- Python的組合模式與責(zé)任鏈模式編程示例
- python3 簡單實(shí)現(xiàn)組合設(shè)計(jì)模式
- python 最簡單的實(shí)現(xiàn)適配器設(shè)計(jì)模式的示例
- Python 單例設(shè)計(jì)模式用法實(shí)例分析
- Python PO設(shè)計(jì)模式的具體使用
- Python設(shè)計(jì)模式之簡單工廠模式實(shí)例詳解
- Python設(shè)計(jì)模式之代理模式實(shí)例詳解
- Python設(shè)計(jì)模式之工廠方法模式實(shí)例詳解
- Python設(shè)計(jì)模式之觀察者模式原理與用法詳解
相關(guān)文章
基于wxPython的GUI實(shí)現(xiàn)輸入對話框(2)
這篇文章主要為大家詳細(xì)介紹了基于wxPython的GUI實(shí)現(xiàn)輸入對話框的第二篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02python格式化輸出實(shí)例(居中、靠右及靠左對齊)
所謂格式化輸出就是數(shù)據(jù)按照某種特殊的格式和要求進(jìn)行輸出,下面這篇文章主要給大家介紹了關(guān)于python格式化輸出(居中、靠右及靠左對齊)的相關(guān)資料,文中介紹了format方式、其他擴(kuò)展寫法以及'%'方式,需要的朋友可以參考下2022-04-04Python+Django在windows下的開發(fā)環(huán)境配置圖解
Python+Django在windows下的開發(fā)環(huán)境配置圖解教程,需要的朋友可以參考下。2009-11-11詳解django使用include無法跳轉(zhuǎn)的解決方法
這篇文章主要介紹了詳解django使用include無法跳轉(zhuǎn)的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03