浅析Python 责任链设计模式

 更新时间:2020年09月11日 11:31:31   作者:大飞  
这篇文章主要介绍了Python 责任链设计模式的相关资料,帮助大家更好的理解和学习python 设计模式,感兴趣的朋友可以了解下

定义:

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

使用场景:

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

优点:

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

代码例子:

"""
责任链模式
"""
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 责任链设计模式的资料请关注脚本之家其它相关文章!

相关文章

  • python2中的中文乱码

    python2中的中文乱码

    这篇文章主要介绍了python2中的中文乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python利用PyQT5设置闹钟功能

    Python利用PyQT5设置闹钟功能

    这篇文章主要介绍了通过PyQt5实现设置一个小闹钟的功能,到了设置的时间后可以响起一段音乐来提醒。感兴趣的小伙伴可以跟随小编一起试一试
    2022-01-01
  • Python中的几种矩阵乘法(小结)

    Python中的几种矩阵乘法(小结)

    这篇文章主要介绍了Python中的几种矩阵乘法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 基于wxPython的GUI实现输入对话框(2)

    基于wxPython的GUI实现输入对话框(2)

    这篇文章主要为大家详细介绍了基于wxPython的GUI实现输入对话框的第二篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • Python中关于使用模块的基础知识

    Python中关于使用模块的基础知识

    这篇文章主要介绍了Python中关于使用模块的基础知识,是Python入门的基础,需要的朋友可以参考下
    2015-05-05
  • python格式化输出实例(居中、靠右及靠左对齐)

    python格式化输出实例(居中、靠右及靠左对齐)

    所谓格式化输出就是数据按照某种特殊的格式和要求进行输出,下面这篇文章主要给大家介绍了关于python格式化输出(居中、靠右及靠左对齐)的相关资料,文中介绍了format方式、其他扩展写法以及'%'方式,需要的朋友可以参考下
    2022-04-04
  • Python+Django在windows下的开发环境配置图解

    Python+Django在windows下的开发环境配置图解

    Python+Django在windows下的开发环境配置图解教程,需要的朋友可以参考下。
    2009-11-11
  • Python中的Classes和Metaclasses详解

    Python中的Classes和Metaclasses详解

    这篇文章主要介绍了Python中的Classes和Metaclasses详解,属于基础知识中类与对象的概念部分的深入,需要的朋友可以参考下
    2015-04-04
  • Python函数嵌套实例

    Python函数嵌套实例

    这篇文章主要介绍了Python函数嵌套实例,本文用实例讲解了Python中的函数嵌套特性,需要的朋友可以参考下
    2014-09-09
  • 详解django使用include无法跳转的解决方法

    详解django使用include无法跳转的解决方法

    这篇文章主要介绍了详解django使用include无法跳转的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03

最新评论