浅析Python 责任链设计模式

时间:2021-05-22

定义:

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

使用场景:

有多个对象可以处理一个请求,哪个对象处理由时间运行时决定。在不明确接受者的情况下,向多个对象中的一个提交一个请求

优点:

降低耦合度:一个对象无需知道是其他哪一个对象处理其请求

代码例子:

"""责任链模式"""from abc import abstractmethod, ABCMetaclass 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 责任链设计模式的资料请关注其它相关文章!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章