python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python责任链模式

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

作者:范桂飓

这篇文章主要介绍了Python设计模式行为型责任链模式,责任链模式将能处理请求的对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理请求为止,避免请求的发送者和接收者之间的耦合关系,下围绕改内容介绍具有一点的参考价值,需要的朋友可以参考下

一、责任链模式

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

责任链模式有几个要点:

二、应用场景

三、代码示例

实体角色:

import abc


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


# 具体处理者,作为链条节点之一。
class 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 = DivisionManager()  # 链接到下一级

    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责任链模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文