""" 实例: 汤宝宝申请报销款,需要走产品经理、部门经理和总经理的审核~ """ class Manager: def __init__(self, name): self.name = name self.successor = None self.amount = 0 def set_successor(self, manager: 'Manager'): self.successor = manager print(f"{self.name}的下一级经理是{manager.name}") def set_amount_right(self, amount: float): self.amount = amount print(f"{self.name}的报销权限是{amount:.2f}元") def have_right(self, amount: float) -> bool: right = amount <= self.amount if right: print(f"{self.name}有权限审批{amount:.2f}元的报销请求") else: print(f"{self.name}没有权限审批{amount:.2f}元的报销请求") return right def approve(self, name:str, amount: float): print(f"{name}提交了一笔{amount:.2f}元的报销请求") if self.have_right(amount): print(f"{self.name}审批通过了{name}的报销请求,金额为{amount:.2f}元") elif self.successor: print(f"{self.name}将{name}的报销请求上报给{self.successor.name}审批") self.successor.approve(name, amount) else: print(f"没有合适的经理审批{name}的报销请求,金额为{amount:.2f}元") if __name__ == "__main__": print("========= 责任链模式 =========") # 创建经理 pm = Manager("产品经理") pm.set_amount_right(1000) dm = Manager("部门经理") dm.set_amount_right(5000) gm = Manager("总经理") gm.set_amount_right(20000) # 设置责任链 pm.set_successor(dm) dm.set_successor(gm) # 提交报销请求 print("-----") pm.approve("汤宝宝", 800) print("-----") pm.approve("汤宝宝", 3000) print("-----") pm.approve("汤宝宝", 15000) print("-----") pm.approve("汤宝宝", 25000) print("\n======= 责任链模式结束 =======")