浅析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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。