1. 程式人生 > 程式設計 >淺析Python 責任鏈設計模式

淺析Python 責任鏈設計模式

定義:

使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求直到有一個物件處理它為止

使用場景:

有多個物件可以處理一個請求,哪個物件處理由時間執行時決定。在不明確接受者的情況下,向多個物件中的一個提交一個請求

優點:

降低耦合度:一個物件無需知道是其他哪一個物件處理其請求

程式碼例子:

"""
責任鏈模式
"""
from abc import abstractmethod,ABCMeta


class Handler(metaclass=ABCMeta):
  @abstractmethod
  def handler_leave(self,day):
    pass


# 總經理審批
class GenaralHandler(Handler):
  def handler_leave(self,day):
    if day <= 10:
      print('總經理批准你%s天假,好好去玩吧' % day)
    else:
      print('你乾脆辭職了吧')


# 部門經理審批
class DepartmentHandler(Handler):
  def __init__(self):
    self.upHandler = GenaralHandler()

  def handler_leave(self,day):
    if day <= 7:
      print('部門經理批准你%s天假,好好去玩吧' % day)
    else:
      print('你請假超過七天,我無權受理,你去找總經理吧')
      self.upHandler.handler_leave(day)


# 專案主管審批
class ProjectHandler(Handler):
  def __init__(self):
    self.upHandler = DepartmentHandler()

  def handler_leave(self,day):
    if day <= 3:
      print('專案主管批准你%s天假,好好去玩吧' % day)
    else:
      print('你請假超過三天,我無權受理,你去找部門經理審批吧')
      self.upHandler.handler_leave(day)


if __name__ == '__main__':
  h = ProjectHandler();
  h.handler_leave(5)

輸出結果:

你請假超過三天,我無權受理,你去找部門經理審批吧

部門經理批准你5天假,好好去玩吧

以上就是淺析Python 責任鏈設計模式的詳細內容,更多關於Python 責任鏈設計模式的資料請關注我們其它相關文章!