从过滤器初识责任链设计模式

下面用的过滤器都是注解方式

可以使用非注解方式,就是去web.xml配置映射关系

上面程序的执行输出是

复制代码

再加一个过滤器

下面来看一段程序

输出结果

和过滤器是否非常相识

但是上面这段程序存在的问题:在编译阶段已经完全确定了调用关系,如果你想改变他们的调用顺序或者继续添加一个方法(好比过滤器),就必须修改java源代码.

而java修改源代码需要重新编译,项目需要重新测试,重新发布.增添了繁琐麻烦且容易出错的过程

违背了:开闭原则--->对扩展开发,对修改关闭

简单说就是对项目扩展我没有意见,但是你扩展的过程中修改了原来的代码.这就不对了.

要达到的效果是,可以扩展,但是别改代码

而过滤器的先后顺序,是可以随时改变的,在servlet中可以通过web.xml的过滤器隐射顺序,或者

在SpringBoot中@Order注解等(注解其实还是要改代码,不推荐)方式,动态改变执行顺序

既:编译阶段并没有确定调用顺序,而是运行阶段动态组合而成的.

这种****那么这种设计模式被称为责任链设计模式

责任链设计模式最大核心思想:在程序运行阶段,动态的组合程序的调用顺序.

相关推荐
AI人工智能+电脑小能手1 天前
大白话说Java设计模式-28-模板方法模式(业务实战篇)
java·设计模式·模板方法模式·spring源码·订单系统·代码复用
leeyi1 天前
两个 Agent 怎么协作:Host-Worker 模式(第91篇-E77)
设计模式·agent·ai编程
AI人工智能+电脑小能手2 天前
大白话说Java设计模式-26-策略模式(业务实战篇)
java·spring·设计模式·策略模式·支付系统·算法切换
星火10242 天前
【Groovy翻译-进阶篇】Groovy 中的设计模式
后端·设计模式·groovy
AI人工智能+电脑小能手2 天前
大白话说Java设计模式-27-策略模式(源码剖析篇)
java·spring·设计模式·策略模式·源码分析·事务管理·comparator
SL_staff2 天前
风控规则如何从硬编码解耦?我们在 JVS-Rules 中的实践与思考
java·spring boot·设计模式
小此方2 天前
Linux加餐(一):藏在Linux中的设计模式(一)策略模式与日志
linux·设计模式·策略模式
To_OC3 天前
从一行入口代码啃透 NestJS:工厂模式、装饰器和依赖注入是怎么串起来的
后端·设计模式·nestjs
东方小月3 天前
从零开发一个 Coding Agent(十二):实现版本化 JSONL 与真实 CLI 入口
前端·设计模式·前端框架
程序员贺加贝3 天前
轻制造SaaS的生产闭环建模-BOM工单领料报工质检与入库
java·设计模式·架构