Python设计模式行为型责任链模式
作者:范桂飓 发布时间:2021-08-15 05:58:16
标签:Python,设计模式,责任链模式
一、责任链模式
责任链模式,将多个处理方法连接成一条链条,请求将在这条链条上流动直到该链条中有一个节点可以处理该请求。通常这条链条是一个对象包含对另一个对象的引用而形成链条,每个节点有对请求的条件,当不满足条件将传递给下一个节点处理。
责任链模式有几个要点:
一个对象中含有另一个对象的引用以此类推形成链条。
每个对象中应该有明确的责任划分,即处理请求的条件。
链条的最后一节应该设计成通用请求处理,以免出现漏洞。
请求应该传入链条的头部
二、应用场景
三、代码示例
实体角色:
抽象处理者(Handler)
具体处理者(Concrete Handler)
客户端(Client)
import abc
# 抽象处理者
class Handler(metaclass=abc.ABCMeta):
@abc.abstractmethod
def handle(self, day):
pass
# 具体处理者,作为链条节点之一。
class GeneralManager(Handler):
def handle(self, day):
if day <= 10:
print(f"总经理准假{day}天")
else:
print("休假太长,不予准假!")
# 具体处理者,作为链条节点之一。
class DivisionManager(Handler):
def __init__(self):
self.next = GeneralManager() # 链接到下一级
def handle(self, day):
if day <= 5:
print(f"部门经理准假{day}天")
else:
print("部门经理准假职级不足")
self.next.handle(day)
# 具体处理者,作为链条节点之一。
class ProjectManager(Handler):
def __init__(self):
self.next = DivisionManager() # 链接到下一级
def handle(self, day):
if day <= 3:
print(f"项目经理准假{day}天")
else:
print("项目经理准假职级不足")
self.next.handle(day)
if __name__ == "__main__":
handler = ProjectManager()
handler.handle(4)
来源:https://is-cloud.blog.csdn.net/article/details/122933665
0
投稿
猜你喜欢
- 在SQL Server中进行开发会让你身处险地,并且寻找快速解决方案。我们编辑了前十名关于SQL Server开发的常见问题。对常见的针对表
- 1.我在一行结束后按回车键,就跳到隔一行的段落上,如何避免隔行跳到下一段落? A.在一行结束后先按着[Shift]键,再按回车就可以不隔行跳
- 目录1. 字符串拆分函数.split()2. 字符串拼接函数.join()扩展:理解" ".join(s.split(&
- 前提搭建钉钉应答机器人,需要先准备或拥有以下权限:钉钉企业的管理员或子管理员(如果不是企业管理员,可以自己创建一个企业,很方便的)有公网通信
- 目标:代码改写成tf2格式把tensorflow 1.X中的代码,迁移到tensorflow2中。一些常见的改写经验。包括sess,tf.p
- 我们提倡无论何时都尽可能地使用CSS,这样我们更容易取得成功.现在浏览器对CSS的支持已经非常好,肯定足以让你用来控制你的网页布局与排版.但
- 在一个大型的项目中,不可避免会出现操作时间的业务,比如时间的格式化,比如时间的加减,我们一般会直接使用moment.js库来做,毕竟稳定可靠
- //获取字符数组String.prototype.ToCharArray=function() { &n
- 今天在使用Pycharm的时候,由于文件过多,我对目录下的文件做了归类,改动了一些文件的路径,结果后来执行的时候,出现了路径找不到的错误.新
- 什么是粘包问题最近在使用Golang编写Socket层,发现有时候接收端会一次读到多个数据包的问题。于是通过查阅资料,发现这个就是传说中的T
- 本讲的内容是使用ASP的ActiveX Server Components(组件),说实话下面的内置组件我们用的很少。一、 Browser
- 当然,如果你的网站文章中有图片,那么请记得一定要打上自己的LOGO,而且这个LOGO不要固定在这些图片的某个角落里,一定要随机出现在图片的任
- 404页面对于站长来说应该并不陌生,其作用无碍乎二点:提高用户体验和增强对搜索引擎的友好性。去年在跟几个朋友在聊天的时候,跟我说404页面不
- 当我想要完美的使用:nth-child或者:nth-of-type的时候有点儿头晕。你越理解它们,就能写出越好的CSS规则!在这些简单的”秘
- 两组字符串数据,需要比较其中相同的数据,并将其值相加并组成一个新的字符串数据a1="sp2=20;sp1=34;"a2=
- 生成一列sum_age 对age 进行累加df['sum_age'] = df['age'].cumsum(
- 介绍PaddleOCR 是一个基于百度飞桨的OCR工具库,包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、
- 本文实例为大家分享了Python实现五子棋游戏的具体代码,供大家参考,具体内容如下class CheckerBoard(): &
- 在Windows vista之前的微软操作系统的地址栏与浏览器的地址栏是一样的,也是面包屑般的自上而下的线性等级形,如果想从D盘跳到C盘是不
- 本文实例讲述了PHP中round()函数对浮点数进行四舍五入的方法。分享给大家供大家参考。具体方法如下:语法:round(x,prec)参数