浅析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的常见命令注入威胁
Feb 18 Python
Python中用max()方法求最大值的介绍
May 15 Python
详解python的webrtc库实现语音端点检测
May 31 Python
使用Python从零开始撸一个区块链
Mar 14 Python
删除python pandas.DataFrame 的多重index实例
Jun 08 Python
Python单元测试unittest的具体使用示例
Dec 17 Python
Falsk 与 Django 过滤器的使用与区别详解
Jun 04 Python
Python将string转换到float的实例方法
Jul 29 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
Jan 20 Python
Python集成开发工具Pycharm的安装和使用详解
Mar 18 Python
浅谈Python列表嵌套字典转化的问题
Apr 07 Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
May 04 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 文件类型判断代码
2009/03/13 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
jquery中event对象属性与方法小结
2013/12/18 Javascript
果断收藏9个Javascript代码高亮脚本
2016/01/06 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
基于vue-video-player自定义播放器的方法
2018/03/21 Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
2018/08/12 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
2019/05/02 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python封装对象实现时间效果
2020/04/23 Python
python的urllib模块显示下载进度示例
2014/01/17 Python
Python中字符串对齐方法介绍
2015/05/21 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
python selenium 弹出框处理的实现
2019/02/26 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
python实现最短路径的实例方法
2020/07/19 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
浅析Python的命名空间与作用域
2020/11/25 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
a标签下载链接的简单实现
2016/09/13 HTML / CSS
美国半成品食材配送服务商:Home Chef
2018/01/25 全球购物
EJB的基本架构
2016/09/22 面试题
大专生求职信
2014/06/29 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
司机岗位职责范本
2015/04/10 职场文书