浅析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 相关文章推荐
压缩包密码破解示例分享(类似典破解)
Jan 17 Python
Python实现简单拆分PDF文件的方法
Jul 30 Python
一个基于flask的web应用诞生(1)
Apr 11 Python
python构建自定义回调函数详解
Jun 20 Python
致Python初学者 Anaconda入门使用指南完整版
Apr 05 Python
Django基础知识与基本应用入门教程
Jul 20 Python
对python插入数据库和生成插入sql的示例讲解
Nov 14 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
Tensorflow中tf.ConfigProto()的用法详解
Feb 06 Python
python实现五子棋程序
Apr 24 Python
python中查看.db文件中表格的名字及表格中的字段操作
Jul 07 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
Oct 29 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 daodb插入、更新与删除数据
2009/03/19 PHP
PHP自动识别字符集并完成转码详解
2013/08/02 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
PHP使用mongoclient简单操作mongodb数据库示例
2019/02/08 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
JQuery+JS实现仿百度搜索结果中关键字变色效果
2011/08/02 Javascript
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
JS打印彩色菱形的实例代码
2018/08/15 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
vue cli使用融云实现聊天功能的实例代码
2019/04/19 Javascript
js实现蒙版效果
2020/01/11 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
python 实现归并排序算法
2012/06/05 Python
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
python写文件时覆盖原来的实例方法
2020/07/22 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
应聘护士自荐信
2013/10/21 职场文书
信息专业个人的自我评价
2013/12/27 职场文书
保护环境的建议书
2014/03/12 职场文书
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
活动总结报告格式
2014/05/09 职场文书
环卫工人节活动总结
2014/08/29 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
五年级数学教学反思
2016/02/16 职场文书
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL