您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關怎么在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 # 具體處理者類1 class ConcreteHandle1(Handle): def handle_request(self,request): if request>0 and request<=10: print "ConcreteHandle1處理請求 ",request else: self.successor.handle_request(request) # 具體處理者類2 class 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中使用職責鏈模式有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。