南强小屋 Design By 杰米
定义:
使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求直到有一个对象处理它为止
使用场景:
有多个对象可以处理一个请求,哪个对象处理由时间运行时决定。在不明确接受者的情况下,向多个对象中的一个提交一个请求
优点:
降低耦合度:一个对象无需知道是其他哪一个对象处理其请求
代码例子:
"""
责任链模式
"""
from abc import abstractmethod, ABCMeta
class Handler(metaclass=ABCMeta):
@abstractmethod
def handler_leave(self, day):
pass
# 总经理审批
class GenaralHandler(Handler):
def handler_leave(self, day):
if day <= 10:
print('总经理批准你%s天假,好好去玩吧' % day)
else:
print('你干脆辞职了吧')
# 部门经理审批
class DepartmentHandler(Handler):
def __init__(self):
self.upHandler = GenaralHandler()
def handler_leave(self, day):
if day <= 7:
print('部门经理批准你%s天假,好好去玩吧' % day)
else:
print('你请假超过七天,我无权受理,你去找总经理吧')
self.upHandler.handler_leave(day)
# 项目主管审批
class ProjectHandler(Handler):
def __init__(self):
self.upHandler = DepartmentHandler()
def handler_leave(self, day):
if day <= 3:
print('项目主管批准你%s天假,好好去玩吧' % day)
else:
print('你请假超过三天,我无权受理,你去找部门经理审批吧')
self.upHandler.handler_leave(day)
if __name__ == '__main__':
h = ProjectHandler();
h.handler_leave(5)
输出结果:
你请假超过三天,我无权受理,你去找部门经理审批吧
部门经理批准你5天假,好好去玩吧
以上就是浅析Python 责任链设计模式的详细内容,更多关于Python 责任链设计模式的资料请关注其它相关文章!
南强小屋 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
南强小屋 Design By 杰米
暂无浅析Python 责任链设计模式的评论...