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

相关文章

  • Pandas自定义shift与DataFrame求差集的小技巧

    Pandas自定义shift与DataFrame求差集的小技巧

    Python是进行数据分析的一种出色语言,主要是因为以数据为中心的python软件包具有奇妙的生态系统,下面这篇文章主要给大家介绍了关于Pandas自定义shift与DataFrame求差集的相关资料,需要的朋友可以参考下
    2022-02-02
  • 详解Flask框架中Flask-Login模块的使用

    详解Flask框架中Flask-Login模块的使用

    Flask-Login 是一个 Flask 模块,可以为 Flask 应用程序提供用户登录功能。这篇文章将通过一些示例为大家介绍一下Flask-Login模块的使用,需要的可以参考一下
    2023-01-01
  • python 基于DDT实现数据驱动测试

    python 基于DDT实现数据驱动测试

    这篇文章主要介绍了python 基于DDT实现数据驱动测试的方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-02-02
  • Python 操作Excel-openpyxl模块用法实例

    Python 操作Excel-openpyxl模块用法实例

    openpyxl 模块是一个读写 Excel 2010 文档的 Python 库,如果要处理更早格式的 Excel 文 档,需要用到额外的库,openpyxl 是一个比较综合的工具,能够同时读取和修改 Excel 文档,这篇文章主要介绍了Python 操作Excel-openpyxl模块使用,需要的朋友可以参考下
    2023-05-05
  • python 下载文件的多种方法汇总

    python 下载文件的多种方法汇总

    这篇文章主要介绍了python 下载文件的多种方法汇总,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-11-11
  • python中使用xlrd、xlwt操作excel表格详解

    python中使用xlrd、xlwt操作excel表格详解

    这篇文章主要介绍了python中使用xlrd、xlwt操作excel表格详解,python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库,需要的朋友可以参考下
    2015-01-01
  • python性能检测工具函数运行内存及运行时间

    python性能检测工具函数运行内存及运行时间

    这篇文章主要介绍了python性能检测工具函数运行内存及运行时间,python虽然是一门慢语言,但是也有着比较多的性能检测工具来帮助我们优化程序的运行效率,下文小编给大家分享五个性能检测工具,需要的朋友可以参考一下
    2022-05-05
  • Django 用户认证Auth组件的使用

    Django 用户认证Auth组件的使用

    这篇文章主要介绍了Django 用户认证Auth组件的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • python中黄金分割法实现方法

    python中黄金分割法实现方法

    这篇文章主要介绍了python中黄金分割法实现方法,涉及Python数学计算的相关技巧,需要的朋友可以参考下
    2015-05-05
  • python匿名函数用法实例分析

    python匿名函数用法实例分析

    这篇文章主要介绍了python匿名函数用法,结合实例形式分析了Python匿名函数的特点、功能及相关使用方法,需要的朋友可以参考下
    2019-08-08

最新评论