开发者

Python设计模式行为型责任链模式

开发者 https://www.devze.com 2022-12-11 09:35 出处:网络 作者: 范桂飓
目录一、责任链模式二、应用场景三、代码示例一、责任链模式 责任链模式,将多个处理方法连接www.cppcns.com成一条链条,请求将在这条链条上流动直到该链条中有一个节点可以处理该请求。通常这条链条是一个对象包含对
目录
  • 一、责任链模式
  • 二、应用场景
  • 三、代码示例

一、责任链模式

责任链模式,将多个处理方法连接www.cppcns.com成一条链条,请求将在这条链条上流动直到该链条中有一个节点可以处理该请求。通常这条链条是一个对象包含对另一个对象的引用而形成链条,每个节点有对请求的条件,当不满足条件将传递给下一个节点处理。

责任链模式有几个要点:

  • 一个对象中含有另一个对象的引用以此类推形成链条。
  • 每个对象中应该有明确的责任划分,即处理请求的条件。
  • 链条的最后一节应该设计成通用请求处理,以免出现漏洞。
  • 请求应该传入链条的头部

二、应用场景

Python设计模式行为型责任链模式

三、代码示例

实体角编程客栈色:

  • 抽象处理者(Handler)
  • 具体处理者(Concrete Handler)
  • 客户端(Client)
import abc


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


# 具体处理者,作为链条节点之一。
claswww.cppcns.coms GeneralManager(Handler):
  def handle(self, day):
    if day <= 10:
      print(f"总经理准假{day}天")
    else:
      print("休假太长,不予准假!")


# 具体处理者,作为链条节点之一。
class DivisionManager(Handler):
  def __init__(self):
    self.next = GeneralManager() # 链接到下一级

  def handle(self, day):
    if day <= 5:
      print(f"部门经理准假{day}天")
    else:
      print("部门经理准假职级不足")
      self.next.handle(day)


# 具体处理者,作为链条节点之一。
class ProjectManager(Handler):
  def __init__(self):
    self.next = DivisionManage编程客栈r() # 链接到下一级

  def handle(self, day):
    if day <= 3:
      print(f"项目经理准假{day}天")
    else:
      print("项目经理准假职级不足")
      self.next.handle(day)


if _编程客栈_name__ == "__main__":
  handler = ProjectManager()
  handler.handle(4)

到此这篇关于python设计模式行为型责任链模式的文章就介绍到这了,更多相关Python责任链模式内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号