行为型模式(一) 责任链模式

发布时间 2023-10-27 16:20:46作者: longfei2021

责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象能够处理它为止。

角色:

  • 抽象处理者
  • 具体处理者
  • 客户端
from abc import ABCMeta,abstractmethod

class Manager(metaclass=ABCMeta):
    @abstractmethod
    def run(self):
        pass

class GroupManager(Manager):
    def __init__(self):
        self.next = DepartManager()
    def run(self,day):
        if day<=3:
            print('组长审批%d天'%day)
        else:
            print('组长权限不够')
            self.next.run(day)

class DepartManager(Manager):
    def __init__(self):
        self.next = CTO()
    def run(self,day):
        if day<=5:
            print('部门经理审批%d天'%day)
        else:
            print('部门经理权限不够')
            self.next.run(day)

class CTO(Manager):
    def run(self,day):
        if day<=10:
            print('CTO审批%d天'%day)
        else:
            print('CTO不同意审批')
            

h = GroupManager()
h.run(6)

组长权限不够
部门经理权限不够
CTO审批6天