本文實例講述了Python設計模式之職責鏈模式原理與用法。分享給大家供大家參考,具體如下:
職責鏈模式(Chain Of Responsibility):使多個對象都有機會處理請求,從而避免發送者和接收者的耦合關系。將對象連成鏈并沿著這條鏈傳遞請求直到被處理
下面是一個設計模式的demo:
#!/usr/bin/env python# -*- coding:utf-8 -*-__author__ = 'Andy'"""大話設計模式設計模式——職責鏈模式職責鏈模式(Chain Of Responsibility):使多個對象都有機會處理請求,從而避免發送者和接收者的耦合關系。將對象連成鏈并沿著這條鏈傳遞請求直到被處理(在調用時要定義好哪個實例是哪個實例的職責上一級)請求沿著定義的鏈條傳遞給可以處理請求的對象"""#抽象一個處理類class Handle(object): def __init__(self): self.successor = '' def setsuccessor(self, successor): self.successor = successor def handle_request(self,request): pass# 具體處理者類1class ConcreteHandle1(Handle): def handle_request(self,request): if request>0 and request<=10: print "ConcreteHandle1處理請求 ",request else: self.successor.handle_request(request)# 具體處理者類2class ConcreteHandle2(Handle): def handle_request(self,request): if request>10 and request<=20: print "ConcreteHandle2處理請求 ",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)
運行結果:

上面類的設計如下圖:

接收者和發送者都沒有對方的明確信息,且鏈中的對象自己并不知道鏈的結構,職責鏈可簡化對象的相互連接,他們僅需保持一個指向后繼者的引用,而不需要保持他所有候選接收者的引用,大大降低了耦合度,可以隨時增加或修改處理一個請求的結構
但是要當心,一個請求沿著職責鏈到達末端,都沒有正確的配置而得不到處理的情況
更多關于Python相關內容可查看本站專題:《Python數據結構與算法教程》、《Python Socket編程技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》
希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答