优秀网站管理员梦幻西游源码论坛

张小明 2026/1/10 10:00:29
优秀网站管理员,梦幻西游源码论坛,山西省交通建设工程监理有限责任公司网站,企业为何选择网站推广外包?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进行投诉反馈,一经查实,立即删除!

孝感有做网站的公司吗wordpress媒体库查询页

在研究生阶段,许多人都会经历这样一个“认知断层”: 导师说:“你的硕士论文做得不错,可以试着投一篇期刊。” 你满怀信心将论文核心章节整理成文,投出去后却收到审稿人一句:“方法描述不清,…

张小明 2025/12/30 19:42:18 网站建设

北京室内设计公司排行上海做网络口碑优化的公司

5分钟打造个性化浏览器主页:Bonjourr极简体验全攻略 【免费下载链接】Bonjourr Minimalist & lightweight startpage inspired by iOS 项目地址: https://gitcode.com/gh_mirrors/bo/Bonjourr 你是否厌倦了千篇一律的浏览器主页?那些布满广告…

张小明 2025/12/30 16:43:03 网站建设

0基础学习网站开发东莞城建局官网

Vue-next-admin:现代化后台管理系统模板的终极指南 【免费下载链接】vue-next-admin 🎉🎉🔥基于vue3.x 、Typescript、vite、Element plus等,适配手机、平板、pc 的后台开源免费模板库(vue2.x请切换vue-pre…

张小明 2025/12/30 16:43:10 网站建设

有找猎聘网站做简历优化的上海网站建设免费推荐

一、项目介绍 本项目旨在开发一个基于YOLOv11目标检测算法的犬种自动识别系统。该系统能够实时地检测图像或视频中的犬只,并精准地识别出其所属的6个特定品种:比格犬(Beagle)、斗牛犬(bullDog)、柯基犬&am…

张小明 2026/1/10 1:48:42 网站建设

北京市建设信息网站上海外贸服装尾货市场

当越来越多的人开始习惯直接向人工智能提问来获取信息时,品牌的传统推广方式正面临前所未有的挑战。搜索引擎优化曾经是企业在线上争夺流量的核心手段,但如今,用户不再仅仅依赖关键词点击结果,而是更倾向于提出完整的问题&#xf…

张小明 2026/1/8 22:23:51 网站建设

视频分销网站建设岳阳网站设计u

烘焙赛道格局生变:精品化趋势下的机遇与挑战近年来,国内烘焙市场正经历一轮结构性调整。从门店扩张态势到消费偏好转变,这一传统行业展现出新的活力与竞争维度。首店经济中的烘焙力量在商业地产领域,烘焙品类正成为招商关注的重点…

张小明 2025/12/31 12:07:48 网站建设