浅析Python 责任链设计模式


Posted in Python onSeptember 11, 2020

定义:

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

使用场景:

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

优点:

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

代码例子:

"""
责任链模式
"""
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 责任链设计模式的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
一则python3的简单爬虫代码
May 26 Python
Python算法应用实战之栈详解
Feb 04 Python
python实现pdf转换成word/txt纯文本文件
Jun 07 Python
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
Jun 09 Python
python中使用print输出中文的方法
Jul 16 Python
python无限生成不重复(字母,数字,字符)组合的方法
Dec 04 Python
python实现自动获取IP并发送到邮箱
Dec 26 Python
Python实现爬取马云的微博功能示例
Feb 16 Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
Feb 25 Python
pycharm第三方库安装失败的问题及解决经验分享
May 09 Python
使用tensorflow 实现反向传播求导
May 26 Python
详解python命令提示符窗口下如何运行python脚本
Sep 11 #Python
python实现邮件循环自动发件功能
Sep 11 #Python
Python 实现微信自动回复的方法
Sep 11 #Python
python 如何调用远程接口
Sep 11 #Python
Visual Studio code 配置Python开发环境
Sep 11 #Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
Sep 11 #Python
python如何实现图片压缩
Sep 11 #Python
You might like
php中对xml读取的相关函数的介绍一
2008/06/05 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
5 cool javascript apps
2007/03/24 Javascript
javascript 设置文本框中焦点的位置
2009/11/20 Javascript
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
用javascript模仿ie的自动完成类似自动完成功的表单
2012/12/12 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
2013/12/30 Javascript
React实现点击删除列表中对应项
2017/01/10 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
vue实现购物车案例
2020/05/30 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
[02:54]DOTA2英雄基础教程 暗影牧师戴泽
2013/12/05 DOTA
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
flask-restful使用总结
2018/12/04 Python
scrapy-redis源码分析之发送POST请求详解
2019/05/15 Python
python aiohttp的使用详解
2019/06/20 Python
用Python做一个久坐提醒小助手的示例代码
2020/02/10 Python
使用Python 自动生成 Word 文档的教程
2020/02/13 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
精伦电子Java笔试题
2013/01/16 面试题
结婚典礼证婚词
2014/01/08 职场文书
新员工入职感言
2014/02/01 职场文书
自荐书范文范例
2014/02/13 职场文书
理工大学毕业生自荐信范文
2014/02/22 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
初中毕业生自我评价
2015/03/02 职场文书
2015年护士节慰问信
2015/03/23 职场文书
放牛班的春天观后感
2015/06/01 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
导游词之西递宏村
2019/12/10 职场文书
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫