ai网站推荐搭建源码下载站网站

张小明 2026/1/16 1:36:25
ai网站推荐,搭建源码下载站网站,龙湖建设工程有限公司网站,seo sem推广Python 中的责任链模式#xff08;Chain of Responsibility Pattern#xff09; 责任链模式是一种行为型设计模式#xff0c;其核心目的是#xff1a; 将请求的发送者和接收者解耦#xff0c;让多个对象都有机会处理请求。将这些对象连成一条链#xff0c;并沿着这条链传…Python 中的责任链模式Chain of Responsibility Pattern责任链模式是一种行为型设计模式其核心目的是将请求的发送者和接收者解耦让多个对象都有机会处理请求。将这些对象连成一条链并沿着这条链传递请求直到有一个对象处理它为止。形象比喻就像请假审批——员工先提交给主管如果主管权限不够就转给经理经理不够就转给总监……直到有人能审批或拒绝。责任链模式的优点解耦发送者和接收者客户端无需知道谁来处理请求动态组合处理链运行时可以自由添加、移除、重组处理器单一职责每个处理器只负责自己能处理的请求灵活性高容易扩展新处理器典型应用场景日志系统DEBUG → INFO → WARNING → ERROR 级别Web 框架中间件认证 → 授权 → 日志 → 路由 → 响应事件处理如 GUI 事件冒泡审批流程请假、报销过滤器链敏感词过滤、XSS 防御异常处理try-except 链Python 实现示例日志处理器链我们实现一个分级日志系统不同级别日志交给不同处理器控制台、文件、邮件。fromabcimportABC,abstractmethod# 抽象处理器HandlerclassLogger(ABC):def__init__(self,next_loggerNone):self.next_loggernext_logger# 链中的下一个处理器deflog(self,level:int,message:str):ifself.can_handle(level):self.handle(message)# 如果有下一个处理器继续传递ifself.next_logger:self.next_logger.log(level,message)abstractmethoddefcan_handle(self,level:int)-bool:passabstractmethoddefhandle(self,message:str):pass# 日志级别常量DEBUG1INFO2WARNING3ERROR4# 具体处理器1控制台日志处理所有级别classConsoleLogger(Logger):defcan_handle(self,level:int)-bool:returnTrue# 所有日志都打印到控制台defhandle(self,message:str):print(f[CONSOLE]{message})# 具体处理器2文件日志只处理 WARNING 及以上classFileLogger(Logger):defcan_handle(self,level:int)-bool:returnlevelWARNINGdefhandle(self,message:str):print(f[FILE] 写入日志文件:{message})# 具体处理器3邮件通知只处理 ERROR 级别classEmailLogger(Logger):defcan_handle(self,level:int)-bool:returnlevelERRORdefhandle(self,message:str):print(f[EMAIL] 发送紧急邮件通知:{message})# 构建责任链defbuild_chain():# 链顺序控制台 → 文件 → 邮件email_loggerEmailLogger()file_loggerFileLogger(email_logger)console_loggerConsoleLogger(file_logger)returnconsole_logger# 客户端使用if__name____main__:logger_chainbuild_chain()logger_chain.log(DEBUG,系统启动正常)# 只控制台logger_chain.log(INFO,用户登录成功)# 只控制台logger_chain.log(WARNING,磁盘空间不足)# 控制台 文件logger_chain.log(ERROR,数据库连接失败)# 控制台 文件 邮件输出[CONSOLE] 系统启动正常 [CONSOLE] 用户登录成功 [CONSOLE] 磁盘空间不足 [FILE] 写入日志文件: 磁盘空间不足 [CONSOLE] 数据库连接失败 [FILE] 写入日志文件: 数据库连接失败 [EMAIL] 发送紧急邮件通知: 数据库连接失败Pythonic 更简洁实现函数式责任链Python 支持高阶函数可以用列表循环实现轻量责任链。fromtypingimportCallable,List# 定义处理器类型HandlerCallable[[str],bool]# 返回 True 表示已处理不再向下传递defconsole_handler(message:str)-bool:print(f[CONSOLE]{message})returnFalse# 继续向下传递deffile_handler(message:str)-bool:if错误inmessageor警告inmessage:print(f[FILE] 记录严重日志:{message})returnFalsedefemail_handler(message:str)-bool:if致命inmessageor失败inmessage:print(f[EMAIL] 紧急通知:{message})returnTrue# 已处理停止传递returnFalse# 构建链handlers:List[Handler][console_handler,file_handler,email_handler]deflog_message(message:str):forhandlerinhandlers:ifhandler(message):break# 某个处理器返回 True停止链# 使用log_message(程序启动)log_message(用户登录)log_message(内存警告)log_message(数据库连接失败)真实项目常见例子Web 框架中间件Flask/Django/FastAPI 的中间件本质就是责任链classMiddleware:def__init__(self,next_middlewareNone):self.nextnext_middlewaredef__call__(self,request):# 前置处理self.process_request(request)# 传递给下一个ifself.next:responseself.next(request)else:responsehandle_request(request)# 最终处理# 后置处理returnself.process_response(response)classAuthMiddleware(Middleware):defprocess_request(self,request):ifnotrequest.user.is_authenticated:returnredirect(/login)classLoggingMiddleware(Middleware):defprocess_request(self,request):print(f请求:{request.path})# 构建链Logging → Auth → 最终处理appLoggingMiddleware(AuthMiddleware())责任链模式结构总结角色说明Handler抽象处理器Logger定义处理接口和链指针ConcreteHandler具体处理器ConsoleLogger 等Client发送请求到链首logger_chain.log()责任链模式 vs 其他模式对比模式目的处理方式典型场景责任链请求沿链传递直到被处理动态链、可能不处理中间件、日志、审批装饰器层层增强功能固定链、全部执行功能包装命令封装请求为对象支持队列、撤销操作历史观察者广播通知多个对象一对多广播事件系统Python 中的实用建议简单场景用函数列表实现最轻量复杂场景用类实现支持状态和动态重组停止传递处理器返回 True/None/Response 表示是否终止链常见库实现Django 中间件Flask 的app.before_requestFastAPI 的 Dependencies 和 Middlewares注意事项确保链的顺序正确优先级高的放前面避免循环链会导致无限递归如果没有处理器处理请求要有默认行为否则请求丢失多线程时注意线程安全责任链模式是构建可插拔、可扩展处理流程的利器在 Web 框架、日志系统、过滤器中无处不在。如果你想看更多实战例子如 HTTP 请求中间件链、审批流程系统、敏感词过滤链或者如何与装饰器模式结合欢迎继续问
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

提供邢台专业做网站如何搭建第三方网站

从0402到0603:电阻电容封装背后的PCB设计真功夫你有没有遇到过这样的场景?原理图画得飞快,网络标号一拉,觉得万事大吉。结果到了PCB布局阶段才发现——某个10kΩ上拉电阻默认用了1206封装,硬生生卡在BGA引脚之间动弹不…

张小明 2026/1/14 11:23:16 网站建设

大型网站空间费用做优惠券的网站有哪些

5G 及未来的可见光通信技术解析 1. 光电二极管材料与类型 在可见光通信(VLC)系统中,光电二极管的材料选择至关重要。长波长光电二极管通常采用铟镓砷(InGaAs)和锗(Ge)制造,而短波长光电二极管则使用硅(Si)。在 VLC 系统里,基于硅的光电二极管是较为常用的选择。 …

张小明 2026/1/13 11:17:19 网站建设

php源码 个人网站微博同步到wordpress

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

张小明 2026/1/13 11:55:49 网站建设

网站备案怎么取消技术网站建设

前言 最近 AutoGLM(智谱 AI 推出的智能体)非常火,但官方的部署通常需要电脑配合 ADB 使用。今天给大家分享一个开源项目 AutoGLM-TERMUX,它可以在安卓手机上通过 Termux 快速部署 Open-AutoGLM 智能体。 核心优势: …

张小明 2026/1/13 11:25:07 网站建设

郑州怎样建设公司网站福州短视频seo平台

Docker BuildKit 加速 PyTorch 镜像构建:高效 AI 开发环境实战 在深度学习项目迭代日益频繁的今天,一个常见的痛点浮出水面:每次提交代码后,CI/CD 流水线都要花近半小时重新构建 PyTorch-CUDA 环境。这不仅拖慢了实验节奏&#xf…

张小明 2026/1/13 12:25:46 网站建设

代理龙华网站建设清新网站设计

STM32开发避坑:从“no stlink detected”说开去 你有没有在深夜调试代码时,刚点下“烧录”按钮,IDE突然弹出那句令人窒息的提示—— “No ST-Link detected” ? 那一刻,心跳暂停半拍。是不是驱动又坏了&#xff1f…

张小明 2026/1/13 12:44:24 网站建设