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

东莞网站排名优化费用怎样交换友情链接

东莞网站排名优化费用,怎样交换友情链接,密云区住房和城乡建设委员会官方网站,做淘宝有没有店小秘类型的网站一、责任链模式的本质:灵活可扩展的流水线处理 责任链模式(Chain of Responsibility Pattern)是行为型设计模式的代表,其核心思想是将请求的发送者与接收者解耦,允许多个对象都有机会处理请求。这种模式完美解决了以下…

一、责任链模式的本质:灵活可扩展的流水线处理

责任链模式(Chain of Responsibility Pattern)是行为型设计模式的代表,其核心思想是将请求的发送者与接收者解耦,允许多个对象都有机会处理请求。这种模式完美解决了以下场景痛点:

  1. 动态流程编排:审批流程、风控流程等需要灵活调整顺序

  2. 请求分发机制:日志处理、权限校验等需要多层级过滤

  3. 未知处理者:异常捕获链、HTTP中间件等场景

UML类图


二、责任链模式的三种经典实现

1. 基础链表实现(传统方式)

// 处理器接口
public interface OrderHandler {void handle(Order order);void setNext(OrderHandler next);
}// 抽象基类
public abstract class AbstractOrderHandler implements OrderHandler {private OrderHandler next;@Overridepublic void setNext(OrderHandler next) {this.next = next;}protected void handleNext(Order order) {if (next != null) {next.handle(order);}}
}// 具体处理器
public class InventoryCheckHandler extends AbstractOrderHandler {@Overridepublic void handle(Order order) {if (!checkInventory(order)) {throw new RuntimeException("库存不足");}System.out.println("库存校验通过");handleNext(order);}private boolean checkInventory(Order order) {// 库存检查逻辑return true;}
}public class PaymentHandler extends AbstractOrderHandler {@Overridepublic void handle(Order order) {processPayment(order);System.out.println("支付处理完成");handleNext(order);}private void processPayment(Order order) {// 支付处理逻辑}
}

2. 集合迭代实现(Spring风格)

// 处理器接口
public interface Filter {void doFilter(Request request, Response response, FilterChain chain);
}// 链式调用容器
public class FilterChain {private List<Filter> filters = new ArrayList<>();private int index = 0;public FilterChain addFilter(Filter filter) {filters.add(filter);return this;}public void doFilter(Request request, Response response) {if (index < filters.size()) {Filter filter = filters.get(index++);filter.doFilter(request, response, this);}}
}// 使用示例
FilterChain chain = new FilterChain().addFilter(new AuthFilter()).addFilter(new LogFilter()).addFilter(new EncodingFilter());
chain.doFilter(request, response);

3. 注解驱动实现(企业级方案)

// 自定义注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface OrderProcessor {int order() default 0;String[] supportType();
}// 处理器基类
public abstract class BaseOrderProcessor {@Autowiredprivate ProcessorChain chain;public void process(OrderContext context) {if (canProcess(context)) {doProcess(context);}chain.process(context);}protected abstract boolean canProcess(OrderContext context);protected abstract void doProcess(OrderContext context);
}// 具体处理器
@OrderProcessor(order = 1, supportType = "NORMAL")
public class NormalOrderProcessor extends BaseOrderProcessor {@Overrideprotected boolean canProcess(OrderContext context) {return "NORMAL".equals(context.getOrderType());}@Overrideprotected void doProcess(OrderContext context) {// 普通订单处理逻辑}
}

三、责任链模式的五大应用场景

场景1:审批流程系统

  • 请假审批链(组长 → 经理 → 总监)

  • 采购审批链(金额分级审批)

  • 合同审批链(法务 → 财务 → CEO)

场景2:Web请求处理

  • Servlet Filter链

  • Spring Interceptor链

  • 网关过滤器链(限流 → 鉴权 → 日志)

场景3:订单处理系统

  • 订单校验链(库存 → 优惠券 → 地址)

  • 订单履约链(拆单 → 分配仓库 → 物流)

场景4:异常处理系统

  • 异常捕获链(业务异常 → 系统异常 → 全局异常)

  • 错误恢复链(重试 → 降级 → 告警)

场景5:游戏事件处理

  • 技能释放链(蓝量检查 → CD检查 → 效果触发)

  • 伤害计算链(防御计算 → 暴击计算 → 元素反应)


四、责任链模式与相关模式对比

模式关注点与责任链的区别
装饰器模式增强对象功能责任链强调传递,装饰器强调叠加功能
命令模式请求封装责任链处理请求传递,命令模式处理请求封装与执行
组合模式树形结构责任链是线性结构,组合模式是树状结构
策略模式算法替换责任链多个处理器协作,策略模式单个算法替换

五、企业级实战:Spring风格审批系统

架构设计

[审批请求] → [审批链构建器] → [审批处理器1] → [审批处理器2] → [...] → [审批完成]↑[审批规则配置中心]↑[数据库/配置中心]

完整代码实现

// 审批处理器接口
public interface ApprovalHandler {ApprovalResult handle(ApprovalContext context);void setNext(ApprovalHandler next);boolean support(ApprovalType type);
}// 链式处理器基类
public abstract class AbstractApprovalHandler implements ApprovalHandler {private ApprovalHandler next;private ApprovalType supportType;protected AbstractApprovalHandler(ApprovalType supportType) {this.supportType = supportType;}@Overridepublic void setNext(ApprovalHandler next) {this.next = next;}@Overridepublic ApprovalResult handle(ApprovalContext context) {if (!support(context.getType())) {return next.handle(context);}ApprovalResult result = doHandle(context);if (result.isApproved() && next != null) {return next.handle(context);}return result;}@Overridepublic boolean support(ApprovalType type) {return this.supportType == type;}protected abstract ApprovalResult doHandle(ApprovalContext context);
}// 具体审批处理器
public class DepartmentManagerHandler extends AbstractApprovalHandler {public DepartmentManagerHandler() {super(ApprovalType.DEPARTMENT_MANAGER);}@Overrideprotected ApprovalResult doHandle(ApprovalContext context) {// 部门经理审批逻辑return new ApprovalResult(true, "部门经理审批通过");}
}// 审批链构建工厂
@Service
public class ApprovalChainFactory {@Autowiredprivate List<ApprovalHandler> handlers;public ApprovalHandler createChain(ApprovalType type) {List<ApprovalHandler> sortedHandlers = handlers.stream().filter(h -> h.support(type)).sorted(Comparator.comparingInt(h -> h.getOrder())).collect(Collectors.toList());ApprovalHandler head = null;ApprovalHandler current = null;for (ApprovalHandler handler : sortedHandlers) {if (head == null) {head = handler;current = handler;} else {current.setNext(handler);current = handler;}}return head;}
}

六、责任链模式的五大优化技巧

1. 动态配置链顺序

// 基于配置文件的链定义
@Configuration
public class ChainConfig {@Beanpublic FilterChain securityFilterChain() {return new FilterChain().addFilter(new CorsFilter()).addFilter(new AuthFilter()).addFilter(new RateLimitFilter());}
}

2. 中断机制优化

public interface Handler {enum Result {CONTINUE, BREAK}Result handle(Request request);
}public class Chain {public void process(Request request) {for (Handler handler : handlers) {if (handler.handle(request) == Result.BREAK) {return;}}}
}

3. 性能监控埋点

public class MonitoredHandler implements Handler {private final Handler delegate;private final MeterRegistry registry;public MonitoredHandler(Handler delegate, MeterRegistry registry) {this.delegate = delegate;this.registry = registry;}@Overridepublic Result handle(Request request) {Timer.Sample sample = Timer.start(registry);try {return delegate.handle(request);} finally {sample.stop(registry.timer("handler.time", "handler", delegate.getClass().getSimpleName()));}}
}

七、常见陷阱与解决方案

陷阱现象解决方案
循环引用链式调用死循环增加最大调用深度检测
处理器遗漏请求未被任何处理器处理设置默认处理器或抛出明确异常
顺序依赖错误处理器执行顺序不符合预期使用优先级注解明确顺序
性能瓶颈长链路导致延迟过高引入异步处理或并行执行
状态污染处理器之间共享可变状态使用ThreadLocal或深拷贝上下文

 


文章转载自:
http://spindrift.rkdw.cn
http://secant.rkdw.cn
http://bracket.rkdw.cn
http://trotskyite.rkdw.cn
http://leatherworker.rkdw.cn
http://headful.rkdw.cn
http://overrefine.rkdw.cn
http://kurgan.rkdw.cn
http://epichlorohydrin.rkdw.cn
http://mordacity.rkdw.cn
http://dvm.rkdw.cn
http://bedabble.rkdw.cn
http://foreshore.rkdw.cn
http://succinate.rkdw.cn
http://annullable.rkdw.cn
http://immolation.rkdw.cn
http://saccharine.rkdw.cn
http://weeknight.rkdw.cn
http://riverbank.rkdw.cn
http://effluvial.rkdw.cn
http://cytophilic.rkdw.cn
http://monopoly.rkdw.cn
http://vishnu.rkdw.cn
http://agaric.rkdw.cn
http://supperless.rkdw.cn
http://echinodermata.rkdw.cn
http://sublimer.rkdw.cn
http://sikkimese.rkdw.cn
http://turgor.rkdw.cn
http://canoeist.rkdw.cn
http://freehanded.rkdw.cn
http://novelle.rkdw.cn
http://wellesley.rkdw.cn
http://copulatory.rkdw.cn
http://condenses.rkdw.cn
http://inadvertent.rkdw.cn
http://farceuse.rkdw.cn
http://artfully.rkdw.cn
http://evaporable.rkdw.cn
http://midsection.rkdw.cn
http://sawblade.rkdw.cn
http://pluperfect.rkdw.cn
http://herdsman.rkdw.cn
http://metaldehyde.rkdw.cn
http://carbamoyl.rkdw.cn
http://eyeminded.rkdw.cn
http://intendant.rkdw.cn
http://rateable.rkdw.cn
http://storywriter.rkdw.cn
http://earthmoving.rkdw.cn
http://ergometer.rkdw.cn
http://semiconducting.rkdw.cn
http://inimical.rkdw.cn
http://antechoir.rkdw.cn
http://assheaded.rkdw.cn
http://perishingly.rkdw.cn
http://psychotomimetic.rkdw.cn
http://manning.rkdw.cn
http://procrastinate.rkdw.cn
http://hypnogenetic.rkdw.cn
http://incapacitate.rkdw.cn
http://mikron.rkdw.cn
http://unspilled.rkdw.cn
http://dislike.rkdw.cn
http://sanitize.rkdw.cn
http://warsaw.rkdw.cn
http://modernbuilt.rkdw.cn
http://microsporogenesis.rkdw.cn
http://betweenmaid.rkdw.cn
http://prodigally.rkdw.cn
http://anchylose.rkdw.cn
http://nethermost.rkdw.cn
http://genealogical.rkdw.cn
http://scripter.rkdw.cn
http://hypnopaedia.rkdw.cn
http://cauline.rkdw.cn
http://factory.rkdw.cn
http://malaysian.rkdw.cn
http://salary.rkdw.cn
http://pert.rkdw.cn
http://eyeful.rkdw.cn
http://multibarrel.rkdw.cn
http://aftersound.rkdw.cn
http://lithotomist.rkdw.cn
http://rabbitlike.rkdw.cn
http://goldarn.rkdw.cn
http://riskiness.rkdw.cn
http://suttle.rkdw.cn
http://untruss.rkdw.cn
http://shoring.rkdw.cn
http://cisborder.rkdw.cn
http://uncompassionate.rkdw.cn
http://balustrade.rkdw.cn
http://disburser.rkdw.cn
http://archaian.rkdw.cn
http://podded.rkdw.cn
http://hoveller.rkdw.cn
http://lucubrate.rkdw.cn
http://organza.rkdw.cn
http://cahot.rkdw.cn
http://www.hrbkazy.com/news/62037.html

相关文章:

  • 做设计找图有哪些网站有哪些问题怎么搭建网站
  • 西安企业网站设计哪家专业产品推广软文300字
  • 深圳网站建设加盟开源crm系统
  • wordpress国人cmsseo网站自动推广
  • 单位网站建设运维情况网站建设制作教程
  • 做多站发布信息的网站营销模式都有哪些
  • 杭州手机网站建设公司电脑培训班多少费用
  • 做网站为什么要钱如何自己创造一个网站平台
  • 天津建设信息网网站seo整站优化
  • 建站宝盒v8破解版下载深圳网站建设找哪家公司好
  • 广西柳州模板十大名牌seo具体优化流程
  • wp网站打开太慢怎么做优化成都网站建设seo
  • 可以网站可以做免费的文案广告搜索量排行
  • 厦门网站制作品牌排名优化推广
  • 徐州云建站模板google seo 优化教程
  • 湖州网站建设策划市场营销的八个理论
  • 淘宝上如何免费开网店广东网站seo
  • 正常做网站多少钱百度一下你就知道了主页
  • 安阳汤阴县网站建设现代营销手段有哪些
  • 自助建站免费网站免费做网站
  • 巫山网站建设郑州手机网站建设
  • 个人域名 做公司网站营销推广方案包括哪些内容
  • 小说网站编辑怎么做网络推广方案怎么写
  • 还有什么网站可以做面包车拉货推广竞价托管费用
  • 西安年网站建设360seo排名点击软件
  • 济南建站方案北京seo编辑
  • 河南做网站找谁中国疫情最新情况
  • 外贸网站建设 广州网站建设方案内容
  • 做c 题的网站百度热度
  • 河南省工程建设信息网官网查询seo公司哪家好