您的位置:首页 > 文旅 > 美景 > 网络技术挑战赛_软件项目管理论文3000字_百度百家_淘宝指数官网

网络技术挑战赛_软件项目管理论文3000字_百度百家_淘宝指数官网

2025/4/2 11:29:22 来源:https://blog.csdn.net/weixin_47612420/article/details/146570018  浏览:    关键词:网络技术挑战赛_软件项目管理论文3000字_百度百家_淘宝指数官网
网络技术挑战赛_软件项目管理论文3000字_百度百家_淘宝指数官网

责任链模式

责任链模式是一种行为型设计模式,它允许请求沿着处理链传递,直到有一个处理者处理为止。其核心思想是解耦请求发送者与接收者。

特点

  • 解耦处理者与接收者: 发送者无需知道哪一个接收者处理请求,接收者也无需知道请求的细节。
  • 动态构建处理链: 灵活的调整处理者的顺序或增减处理者。
  • 责任明确: 每个处理者只负责处理特定的请求。

模式结构

角色描述
抽象处理者(Handler)定义了处理请求的接口,并且可以访问它的后继者
具体处理者(ConcreteHandler)实现了处理请求的接口,判断是否可以处理该请求,否则将请求传递给它的后继者
客户端(Client)创建处理链,并向链的头部发起请求

简单示例

from abc import ABC, abstractmethod
from typing import Optional# 处理者抽象类
class Approver(ABC):def __init__(self):self._successor: Optional[Approver] = Nonedef set_successor(self, successor: 'Approver') -> 'Approver':self._successor = successorreturn successor@abstractmethoddef handle_request(self, amount: float) -> str:pass# 具体处理者类
class Supervisor(Approver):def handle_request(self, amount: str) -> str:if amount <= 500:return f'Supervisor approved ${amount} Reimbursement.'elif self._successor:return self._successor.handle_request(amount)else:return f'${amount} Reimbursement denied.'class DepartmentManager(Approver):def handle_request(self, amount: str) -> str:if amount <= 1000:return f'Department Manager approved ${amount} Reimbursement.'elif self._successor:return self._successor.handle_request(amount)else:return f'${amount} Reimbursement denied.'class CEO(Approver):def handle_request(self, amount: str) -> str:if amount <= 10000:return f'CEO approved ${amount} Reimbursement.'elif self._successor:return self._successor.handle_request(amount)else:return f'${amount} Reimbursement denied.'# 客户端代码
if __name__ == '__main__':supervisor = Supervisor()department_manager = DepartmentManager()ceo = CEO()supervisor.set_successor(department_manager).set_successor(ceo)requests = [250, 600, 1250, 10000]for amount in requests:print(supervisor.handle_request(amount))# 结果输出# Supervisor approved $250.0 Reimbursement.# Department Manager approved $600.0 Reimbursement.# CEO approved $1250.0 Reimbursement.# 10000 Reimbursement denied.

适用场景

  • 多级请求处理,如审批流程
  • 动态请求处理,如Web框架的中间件
  • 需要按优先级处理请求,如客服系统

优缺点

  • 优点:
    • 减少耦合:处理者与请求者之间解耦,请求者无需知道处理者
    • 符合单一职责和开闭原则
  • 缺点:
    • 请求可能未被处理,需要添加兜底逻辑
    • 调试复杂,链条过长时,对象的状态和处理者顺序有关联,需要跟踪整个链条

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com