欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python設(shè)計模式行為型責(zé)任鏈模式

 更新時間:2022年02月15日 11:11:44   作者:范桂颶  
這篇文章主要介紹了Python設(shè)計模式行為型責(zé)任鏈模式,責(zé)任鏈模式將能處理請求的對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有一個對象處理請求為止,避免請求的發(fā)送者和接收者之間的耦合關(guān)系,下圍繞改內(nèi)容介紹具有一點的參考價值,需要的朋友可以參考下

一、責(zé)任鏈模式

責(zé)任鏈模式,將多個處理方法連接成一條鏈條,請求將在這條鏈條上流動直到該鏈條中有一個節(jié)點可以處理該請求。通常這條鏈條是一個對象包含對另一個對象的引用而形成鏈條,每個節(jié)點有對請求的條件,當(dāng)不滿足條件將傳遞給下一個節(jié)點處理。

責(zé)任鏈模式有幾個要點:

  • 一個對象中含有另一個對象的引用以此類推形成鏈條。
  • 每個對象中應(yīng)該有明確的責(zé)任劃分,即處理請求的條件。
  • 鏈條的最后一節(jié)應(yīng)該設(shè)計成通用請求處理,以免出現(xiàn)漏洞。
  • 請求應(yīng)該傳入鏈條的頭部

二、應(yīng)用場景

三、代碼示例

實體角色:

  • 抽象處理者(Handler)
  • 具體處理者(Concrete Handler)
  • 客戶端(Client)
import abc


# 抽象處理者
class Handler(metaclass=abc.ABCMeta):
? ? @abc.abstractmethod
? ? def handle(self, day):
? ? ? ? pass


# 具體處理者,作為鏈條節(jié)點之一。
class GeneralManager(Handler):
? ? def handle(self, day):
? ? ? ? if day <= 10:
? ? ? ? ? ? print(f"總經(jīng)理準(zhǔn)假{day}天")
? ? ? ? else:
? ? ? ? ? ? print("休假太長,不予準(zhǔn)假!")


# 具體處理者,作為鏈條節(jié)點之一。
class DivisionManager(Handler):
? ? def __init__(self):
? ? ? ? self.next = GeneralManager() ?# 鏈接到下一級

? ? def handle(self, day):
? ? ? ? if day <= 5:
? ? ? ? ? ? print(f"部門經(jīng)理準(zhǔn)假{day}天")
? ? ? ? else:
? ? ? ? ? ? print("部門經(jīng)理準(zhǔn)假職級不足")
? ? ? ? ? ? self.next.handle(day)


# 具體處理者,作為鏈條節(jié)點之一。
class ProjectManager(Handler):
? ? def __init__(self):
? ? ? ? self.next = DivisionManager() ?# 鏈接到下一級

? ? def handle(self, day):
? ? ? ? if day <= 3:
? ? ? ? ? ? print(f"項目經(jīng)理準(zhǔn)假{day}天")
? ? ? ? else:
? ? ? ? ? ? print("項目經(jīng)理準(zhǔn)假職級不足")
? ? ? ? ? ? self.next.handle(day)


if __name__ == "__main__":
? ? handler = ProjectManager()
? ? handler.handle(4)

到此這篇關(guān)于Python設(shè)計模式行為型責(zé)任鏈模式的文章就介紹到這了,更多相關(guān)Python責(zé)任鏈模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論