浅析Python 责任链设计模式
定义:
使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求直到有一个对象处理它为止
使用场景:
有多个对象可以处理一个请求,哪个对象处理由时间运行时决定。在不明确接受者的情况下,向多个对象中的一个提交一个请求
优点:
降低耦合度:一个对象无需知道是其他哪一个对象处理其请求
代码例子:
""" 责任链模式 """ fromabcimportabstractmethod,ABCMeta classHandler(metaclass=ABCMeta): @abstractmethod defhandler_leave(self,day): pass #总经理审批 classGenaralHandler(Handler): defhandler_leave(self,day): ifday<=10: print('总经理批准你%s天假,好好去玩吧'%day) else: print('你干脆辞职了吧') #部门经理审批 classDepartmentHandler(Handler): def__init__(self): self.upHandler=GenaralHandler() defhandler_leave(self,day): ifday<=7: print('部门经理批准你%s天假,好好去玩吧'%day) else: print('你请假超过七天,我无权受理,你去找总经理吧') self.upHandler.handler_leave(day) #项目主管审批 classProjectHandler(Handler): def__init__(self): self.upHandler=DepartmentHandler() defhandler_leave(self,day): ifday<=3: print('项目主管批准你%s天假,好好去玩吧'%day) else: print('你请假超过三天,我无权受理,你去找部门经理审批吧') self.upHandler.handler_leave(day) if__name__=='__main__': h=ProjectHandler(); h.handler_leave(5)
输出结果:
你请假超过三天,我无权受理,你去找部门经理审批吧
部门经理批准你5天假,好好去玩吧
以上就是浅析Python责任链设计模式的详细内容,更多关于Python责任链设计模式的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。