浅析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 相关文章推荐
Python中字典(dict)和列表(list)的排序方法实例
Jun 16 Python
在Python的Flask框架下使用sqlalchemy库的简单教程
Apr 09 Python
Python实现给文件添加内容及得到文件信息的方法
May 28 Python
Python函数式编程指南(四):生成器详解
Jun 24 Python
Linux系统上Nginx+Python的web.py与Django框架环境
Dec 25 Python
python开发利器之ulipad的使用实践
Mar 16 Python
python清除字符串中间空格的实例讲解
May 11 Python
Python实现对文件进行单词划分并去重排序操作示例
Jul 10 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
python输出电脑上所有的串口名的方法
Jul 02 Python
Python通过kerberos安全认证操作kafka方式
Jun 06 Python
如何在pycharm中安装第三方包
Oct 27 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连接Oracle for NT 远程数据库
2006/10/09 PHP
Apache2 httpd.conf 中文版
2006/12/06 PHP
php简单静态页生成过程
2008/03/27 PHP
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
探究Laravel使用env函数读取环境变量为null的问题
2016/12/06 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
2009/11/27 Javascript
3个可以改善用户体验的AngularJS指令介绍
2015/06/18 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
JavaScript中常见内置函数用法示例
2018/05/14 Javascript
JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法
2018/06/07 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
python检测某个变量是否有定义的方法
2015/05/20 Python
用Python编写简单的微博爬虫
2016/03/04 Python
Python对文件操作知识汇总
2016/05/15 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
python多任务之协程的使用详解
2019/08/26 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
详解python中的异常和文件读写
2021/01/03 Python
animation和transition的区别
2020/10/12 HTML / CSS
Ticketmaster德国票务网站:购买音乐会和体育等门票
2016/11/14 全球购物
德国网上超市:myTime.de
2019/08/26 全球购物
String是最基本的数据类型吗?
2013/06/13 面试题
我的动漫时代的创业计划书范文
2014/01/27 职场文书
高二政治教学反思
2014/02/01 职场文书
校园学雷锋活动月总结
2014/03/09 职场文书
诚信考试倡议书
2014/04/15 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
护士工作失误检讨书
2014/09/14 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
python前后端自定义分页器
2022/04/13 Python