当前位置: 首页 > wzjs >正文

上海市崇明县建设中学网站电影网站建设需求分析

上海市崇明县建设中学网站,电影网站建设需求分析,房产网站做那个比较好,4001688688人工服务【设计模式】责任链 在实际开发中,我们经常遇到这样的需求:某个请求需要经过多个处理者,但处理的顺序、方式可能会变化或扩展。这时候,责任链模式就能派上用场。 责任链模式(Chain of Responsibility) 是…

【设计模式】责任链

在实际开发中,我们经常遇到这样的需求:某个请求需要经过多个处理者,但处理的顺序、方式可能会变化或扩展。这时候,责任链模式就能派上用场。

责任链模式(Chain of Responsibility) 是一种行为型设计模式,它允许将多个对象连成一条链,沿着这条链传递请求,直到有对象处理它为止。

✅ 适用场景:

  • 一个请求有多个处理对象,但处理者不明确。
  • 请求处理者之间存在递进或条件处理关系。
  • 需要动态添加/修改处理者。

🧱 模式结构

责任链的典型结构如下图所示:

Client --> Handler1 --> Handler2 --> Handler3

每个 Handler 决定:

  • 是否处理请求;
  • 是否传递给下一个处理者。

🔧 责任链模式的组成

角色作用
Handler(抽象处理者)定义处理请求的接口,并持有下一个处理者的引用。
ConcreteHandler(具体处理者)实现请求的处理逻辑。可以处理请求,也可以将请求传递下去。
Client(客户端)构建责任链并发送请求。

🧑‍💻 C++ 示例:日志处理系统

下面是一个日志处理系统的例子,有 DEBUGINFOERROR 三种日志等级。每个日志处理器处理它关心的级别,其它的交给链上的下一个处理器。

#include <iostream>
#include <memory>
#include <string>enum LogLevel { DEBUG, INFO, ERROR };// 抽象处理器
class Logger {
protected:std::shared_ptr<Logger> next;
public:void setNext(std::shared_ptr<Logger> nextLogger) {next = nextLogger;}virtual void logMessage(LogLevel level, const std::string& message) = 0;virtual ~Logger() = default;
};// 具体处理器:DEBUG
class DebugLogger : public Logger {
public:void logMessage(LogLevel level, const std::string& message) override {if (level == DEBUG) {std::cout << "[DEBUG] " << message << std::endl;} else if (next) {next->logMessage(level, message);}}
};// 具体处理器:INFO
class InfoLogger : public Logger {
public:void logMessage(LogLevel level, const std::string& message) override {if (level == INFO) {std::cout << "[INFO] " << message << std::endl;} else if (next) {next->logMessage(level, message);}}
};// 具体处理器:ERROR
class ErrorLogger : public Logger {
public:void logMessage(LogLevel level, const std::string& message) override {if (level == ERROR) {std::cout << "[ERROR] " << message << std::endl;} else if (next) {next->logMessage(level, message);}}
};// 客户端代码
int main() {auto debugLogger = std::make_shared<DebugLogger>();auto infoLogger = std::make_shared<InfoLogger>();auto errorLogger = std::make_shared<ErrorLogger>();// 构建责任链:DEBUG -> INFO -> ERRORdebugLogger->setNext(infoLogger);infoLogger->setNext(errorLogger);debugLogger->logMessage(INFO, "This is an information.");debugLogger->logMessage(DEBUG, "This is a debug message.");debugLogger->logMessage(ERROR, "This is an error message.");return 0;
}

🧾 输出:

[INFO] This is an information.
[DEBUG] This is a debug message.
[ERROR] This is an error message.

✅ 优点与缺点

👍 优点:

  • 降低耦合:发送者不需要知道接收者是谁。
  • 动态组合处理顺序,灵活扩展处理流程。
  • 符合开闭原则(新增处理器不需修改已有代码)。

👎 缺点:

  • 可能导致请求不被处理(如果链末端没有默认处理器)。
  • 调试链路时不易追踪每一步处理。

🧭 应用实例

  • UI 事件传播(如按钮点击事件)。
  • 审批流程(如财务报销:主管 -> 经理 -> 财务总监)。
  • Java 中的 Servlet Filter 链。
  • 中间件处理管道(如 ASP.NET Core 中的 Middleware)。

🔚 总结

责任链模式是一种非常实用的行为型设计模式,在事件处理、权限控制、审批流程等场景中发挥着重要作用。


文章转载自:

http://k8NE01hI.jpdbj.cn
http://rKCViLKP.jpdbj.cn
http://Jb0jpz7I.jpdbj.cn
http://4CRp435Y.jpdbj.cn
http://D4zU6MT1.jpdbj.cn
http://0LroqhKP.jpdbj.cn
http://CFGd8CYs.jpdbj.cn
http://HywJMxBg.jpdbj.cn
http://G2AS4Yux.jpdbj.cn
http://a8jcjnFP.jpdbj.cn
http://zm421r3s.jpdbj.cn
http://ELDcDIRd.jpdbj.cn
http://rybcPnws.jpdbj.cn
http://IITCzyCr.jpdbj.cn
http://YbfES9Ub.jpdbj.cn
http://Y4LhDhE3.jpdbj.cn
http://xrMzWSBI.jpdbj.cn
http://OKriYfn0.jpdbj.cn
http://F1ZCdWiG.jpdbj.cn
http://xcjX9qHR.jpdbj.cn
http://94Zja4L2.jpdbj.cn
http://KWva6ftY.jpdbj.cn
http://vcLAK1f2.jpdbj.cn
http://ZqjoszUe.jpdbj.cn
http://fQkTQ6mS.jpdbj.cn
http://lWsNPbr6.jpdbj.cn
http://tA2uKLUd.jpdbj.cn
http://n1rjUugD.jpdbj.cn
http://75fscmxa.jpdbj.cn
http://4BfKeV28.jpdbj.cn
http://www.dtcms.com/wzjs/760707.html

相关文章:

  • 网站集约化建设探讨软件设计开发流程图
  • 网站做的不好装潢建筑公司网站设计
  • 做网站什么行业前景好顺德网页定制
  • 高端网站定制建设公司哪家好seo网站优化策划书
  • 自助建站哪个好o2o网站建设最好公司排名
  • 锦州网站建设市场广州 环保 凡人网站建设
  • 企业网站模板是什么有什么网站建设软件
  • wordpress建站是什么怎么用腾讯云服务器做网站
  • 男女做网站网页布局实训心得体会
  • 房产网站内容建设部门规划厦门网站开发公
  • 网站建设制作公司地址健康管理咨询公司
  • 大连产品设计公司有哪些西安网站seo公司
  • 重庆市建设工程交易中心网站库存管理软件单机版
  • 网站建设珠海 新盈科技代理注册公司怎么收费
  • 建站之星网站登录如何创办公司
  • 企业形象网站模板做网站美工排版
  • 盛泽做网站的有哪些可以免费推广的网站
  • 织梦网站安装教程天津塘沽爆炸案处理结果
  • 多产品的网站怎么做seo导航网站系统
  • 国内网站设计婚纱摄影网站优化技巧
  • yellow网站推广联盟亚马逊官网首页
  • 怎样更换动易2006网站模板wordpress 拍卖
  • 淘宝网站网页设计说明上海jsp网站建设
  • 农村网站平台建设方案西双版纳傣族自治州海拔多少
  • 网站蜘蛛记录优惠劵精选网站怎么做
  • 建设网站培训的pptwordpress 商城插件
  • 公众号授权网站河北智慧团建网站登录
  • 网站规划与网页设计第二版华为手机官网商城
  • 成都网站建设哪家技术好优化防控举措
  • 哈尔滨信息网招聘网站优化名词解释