淺析Python 責(zé)任鏈設(shè)計(jì)模式
定義:
使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,從而避免請(qǐng)求的發(fā)送者和接受者之間的耦合關(guān)系。將這些對(duì)象連成一條鏈,并沿著這條鏈傳遞該請(qǐng)求直到有一個(gè)對(duì)象處理它為止
使用場(chǎng)景:
有多個(gè)對(duì)象可以處理一個(gè)請(qǐng)求,哪個(gè)對(duì)象處理由時(shí)間運(yùn)行時(shí)決定。在不明確接受者的情況下,向多個(gè)對(duì)象中的一個(gè)提交一個(gè)請(qǐng)求
優(yōu)點(diǎn):
降低耦合度:一個(gè)對(duì)象無(wú)需知道是其他哪一個(gè)對(duì)象處理其請(qǐng)求
代碼例子:
"""
責(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('你干脆辭職了吧')
# 部門(mén)經(jīng)理審批
class DepartmentHandler(Handler):
def __init__(self):
self.upHandler = GenaralHandler()
def handler_leave(self, day):
if day <= 7:
print('部門(mén)經(jīng)理批準(zhǔn)你%s天假,好好去玩吧' % day)
else:
print('你請(qǐng)假超過(guò)七天,我無(wú)權(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('你請(qǐng)假超過(guò)三天,我無(wú)權(quán)受理,你去找部門(mén)經(jīng)理審批吧')
self.upHandler.handler_leave(day)
if __name__ == '__main__':
h = ProjectHandler();
h.handler_leave(5)
輸出結(jié)果:
你請(qǐng)假超過(guò)三天,我無(wú)權(quán)受理,你去找部門(mén)經(jīng)理審批吧
部門(mén)經(jīng)理批準(zhǔn)你5天假,好好去玩吧
以上就是淺析Python 責(zé)任鏈設(shè)計(jì)模式的詳細(xì)內(nèi)容,更多關(guān)于Python 責(zé)任鏈設(shè)計(jì)模式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python使用設(shè)計(jì)模式中的責(zé)任鏈模式與迭代器模式的示例
- Python的組合模式與責(zé)任鏈模式編程示例
- python3 簡(jiǎn)單實(shí)現(xiàn)組合設(shè)計(jì)模式
- python 最簡(jiǎn)單的實(shí)現(xiàn)適配器設(shè)計(jì)模式的示例
- Python 單例設(shè)計(jì)模式用法實(shí)例分析
- Python PO設(shè)計(jì)模式的具體使用
- Python設(shè)計(jì)模式之簡(jiǎn)單工廠模式實(shí)例詳解
- Python設(shè)計(jì)模式之代理模式實(shí)例詳解
- Python設(shè)計(jì)模式之工廠方法模式實(shí)例詳解
- Python設(shè)計(jì)模式之觀察者模式原理與用法詳解
相關(guān)文章
Python?NumPy科學(xué)計(jì)算庫(kù)的高級(jí)應(yīng)用
這篇文章主要為大家介紹了Python?NumPy科學(xué)計(jì)算庫(kù)的高級(jí)應(yīng)用深入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Python MySQL數(shù)據(jù)庫(kù)基本操作及項(xiàng)目示例詳解
這篇文章主要介紹了Python連接MySQL數(shù)據(jù)庫(kù)后的一些基本操作,并以銀行管理系統(tǒng)項(xiàng)目為例,為大家具體介紹了一下部分功能的實(shí)現(xiàn),文中的示例代碼具有一定的學(xué)習(xí)價(jià)值,感興趣的可以了解一下2021-12-12
關(guān)于dataframe.query()篩選tips
在Pandas中,通過(guò)布爾索引或.query()方法可以實(shí)現(xiàn)對(duì)DataFrame中數(shù)據(jù)的篩選。例如,篩選特定列符合條件的行數(shù)據(jù)或排除某些類型值。此外,.query()方法還支持使用外部變量進(jìn)行篩選。這些操作對(duì)數(shù)據(jù)處理非常有用,可以高效地進(jìn)行數(shù)據(jù)清洗和預(yù)處理2024-09-09
python+requests+pytest接口自動(dòng)化的實(shí)現(xiàn)示例
這篇文章主要介紹了python+requests+pytest接口自動(dòng)化的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Python 編碼處理-str與Unicode的區(qū)別
本文主要介紹Python 編碼處理的問(wèn)題,這里整理了相關(guān)資料,并詳細(xì)說(shuō)明如何處理編碼問(wèn)題,有需要的小伙伴可以參考下2016-09-09
簡(jiǎn)單實(shí)現(xiàn)Python爬取網(wǎng)絡(luò)圖片
這篇文章主要教大家如何簡(jiǎn)單實(shí)現(xiàn)Python爬取網(wǎng)絡(luò)圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
利用python實(shí)現(xiàn)你說(shuō)我猜游戲的完整實(shí)例
這篇文章主要給大家介紹了關(guān)于如何利用python實(shí)現(xiàn)你說(shuō)我猜游戲的相關(guān)資料,用到的都是一些簡(jiǎn)單的基礎(chǔ)的python語(yǔ)句,適合剛?cè)腴T(mén)的小白,可以嘗試跟著一起敲一下,感受一下編程中的樂(lè)趣,需要的朋友可以參考下2022-05-05

