浅析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之os操作方法(详解)
Jun 15 Python
python 创建弹出式菜单的实现代码
Jul 11 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
python中numpy.zeros(np.zeros)的使用方法
Nov 07 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
Mar 05 Python
python pandas dataframe 行列选择,切片操作方法
Apr 10 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 Python
python线程中同步锁详解
Apr 27 Python
Pycharm如何导入python文件及解决报错问题
May 10 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
pytorch 如何使用amp进行混合精度训练
May 24 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函数之日期时间函数date()使用详解
2013/09/09 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
2017/05/02 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
一个js封装的不错的选项卡效果代码
2008/02/15 Javascript
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
使用UglifyJS合并/压缩JavaScript的方法
2012/03/07 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
不得不分享的JavaScript常用方法函数集(下)
2015/12/25 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
函数四种调用模式以及其中的this指向
2017/01/16 Javascript
Express之get,pos请求参数的获取
2017/05/02 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
javascript History对象原理解析
2020/02/17 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
Python发送email的3种方法
2015/04/28 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
Python实现简单遗传算法(SGA)
2018/01/29 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
Python3.4 splinter(模拟填写表单)使用方法
2018/10/13 Python
对python中的乘法dot和对应分量相乘multiply详解
2018/11/14 Python
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
文秘大学生求职信
2014/02/25 职场文书
企业文化标语大全
2014/06/10 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
安全教育主题班会总结
2015/08/14 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
nginx配置指令之server_name的具体使用
2022/08/14 Servers