Python設(shè)計(jì)模式之職責(zé)鏈模式原理與用法實(shí)例分析
本文實(shí)例講述了Python設(shè)計(jì)模式之職責(zé)鏈模式原理與用法。分享給大家供大家參考,具體如下:
職責(zé)鏈模式(Chain Of Responsibility):使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,從而避免發(fā)送者和接收者的耦合關(guān)系。將對(duì)象連成鏈并沿著這條鏈傳遞請(qǐng)求直到被處理
下面是一個(gè)設(shè)計(jì)模式的demo:
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'Andy' """ 大話設(shè)計(jì)模式 設(shè)計(jì)模式——職責(zé)鏈模式 職責(zé)鏈模式(Chain Of Responsibility):使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,從而避免發(fā)送者和接收者的耦合關(guān)系。將對(duì)象連成鏈并沿著這條鏈傳遞請(qǐng)求直到被處理 (在調(diào)用時(shí)要定義好哪個(gè)實(shí)例是哪個(gè)實(shí)例的職責(zé)上一級(jí))請(qǐng)求沿著定義的鏈條傳遞給可以處理請(qǐng)求的對(duì)象 """ #抽象一個(gè)處理類 class Handle(object): def __init__(self): self.successor = '' def setsuccessor(self, successor): self.successor = successor def handle_request(self,request): pass # 具體處理者類1 class ConcreteHandle1(Handle): def handle_request(self,request): if request>0 and request<=10: print "ConcreteHandle1處理請(qǐng)求 ",request else: self.successor.handle_request(request) # 具體處理者類2 class ConcreteHandle2(Handle): def handle_request(self,request): if request>10 and request<=20: print "ConcreteHandle2處理請(qǐng)求 ",request else: self.successor.handle_request(request) if __name__=="__main__": c1 = ConcreteHandle1() c2 = ConcreteHandle2() c1.setsuccessor(c2) for i in range(6,15,2): c1.handle_request(i)
運(yùn)行結(jié)果:
上面類的設(shè)計(jì)如下圖:
接收者和發(fā)送者都沒(méi)有對(duì)方的明確信息,且鏈中的對(duì)象自己并不知道鏈的結(jié)構(gòu),職責(zé)鏈可簡(jiǎn)化對(duì)象的相互連接,他們僅需保持一個(gè)指向后繼者的引用,而不需要保持他所有候選接收者的引用,大大降低了耦合度,可以隨時(shí)增加或修改處理一個(gè)請(qǐng)求的結(jié)構(gòu)
但是要當(dāng)心,一個(gè)請(qǐng)求沿著職責(zé)鏈到達(dá)末端,都沒(méi)有正確的配置而得不到處理的情況
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- Python設(shè)計(jì)模式之觀察者模式實(shí)例
- 舉例講解Python設(shè)計(jì)模式編程中的訪問(wèn)者與觀察者模式
- 詳解Python設(shè)計(jì)模式編程中觀察者模式與策略模式的運(yùn)用
- Python設(shè)計(jì)模式之觀察者模式簡(jiǎn)單示例
- Python設(shè)計(jì)模式之抽象工廠模式原理與用法詳解
- Python設(shè)計(jì)模式之適配器模式原理與用法詳解
- Python設(shè)計(jì)模式之組合模式原理與用法實(shí)例分析
- Python設(shè)計(jì)模式之命令模式原理與用法實(shí)例分析
- Python設(shè)計(jì)模式之享元模式原理與用法實(shí)例分析
- Python設(shè)計(jì)模式之解釋器模式原理與用法實(shí)例分析
- Python設(shè)計(jì)模式之迭代器模式原理與用法實(shí)例分析
- Python設(shè)計(jì)模式之觀察者模式原理與用法詳解
相關(guān)文章
python 計(jì)算數(shù)組中每個(gè)數(shù)字出現(xiàn)多少次--“Bucket”桶的思想
這篇文章主要介紹了python 計(jì)算數(shù)組中每個(gè)數(shù)字出現(xiàn)多少次--“Bucket”桶的思想,需要的朋友可以參考下2017-12-12Python3.4學(xué)習(xí)筆記之 idle 清屏擴(kuò)展插件用法分析
這篇文章主要介紹了Python3.4 idle 清屏擴(kuò)展插件用法,簡(jiǎn)單分析了idle清屏的幾種方法及idle清屏插件的相關(guān)使用技巧,需要的朋友可以參考下2019-03-03python filecmp.dircmp實(shí)現(xiàn)遞歸比對(duì)兩個(gè)目錄的方法
這篇文章主要介紹了python filecmp.dircmp實(shí)現(xiàn)遞歸比對(duì)兩個(gè)目錄的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05利用Python實(shí)現(xiàn)自動(dòng)生成數(shù)據(jù)日?qǐng)?bào)
日?qǐng)?bào),是大部分打工人繞不過(guò)的難題。對(duì)于管理者來(lái)說(shuō),日?qǐng)?bào)是事前管理的最好抓手,可以了解團(tuán)隊(duì)的氛圍和狀態(tài)。本文將利用Python實(shí)現(xiàn)自動(dòng)生成數(shù)據(jù)日?qǐng)?bào),感興趣的可以動(dòng)手嘗試一下2022-07-07