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

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

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

上面程序的执行输出是

复制代码

再加一个过滤器

下面来看一段程序

输出结果

和过滤器是否非常相识

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

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

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

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

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

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

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

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

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

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

相关推荐
lqqjuly9 小时前
设计模式:理论、架构与 C++ 实现—SOLID原则到23 种经典模式
c++·设计模式·架构
老码观察15 小时前
设计模式实战解读(九):责任链模式——流水线上层层把关的艺术
java·设计模式·责任链模式
workflower2 天前
具身智能研究对象:物理交互中的智能行为
设计模式·动态规划·软件工程·软件构建·scrum
折哥的程序人生 · 物流技术专研2 天前
Java 23 种设计模式:从踩坑到精通 | 抽象工厂 —— 支付/收款如何成套创建?跨平台 UI 如何一键换肤?
java·开发语言·后端·设计模式
老码观察3 天前
设计模式实战解读(八):代理模式——控制访问的隐形中间层
设计模式·代理模式
我爱cope3 天前
【Agent智能体12 | 反思设计模式-使用外部反馈】
人工智能·设计模式·语言模型·职场和发展
geovindu3 天前
python: Bounded Parallelism Pattern
开发语言·python·设计模式·有界并行模式
我爱cope3 天前
【Agent智能体11 | 反思设计模式-评估反射的影响的方法】
人工智能·设计模式·语言模型·职场和发展
nnsix3 天前
设计模式 - 迭代器模式 笔记
笔记·设计模式·迭代器模式
geovindu3 天前
go: Bounded Parallelism Pattern
开发语言·后端·设计模式·golang·有界并行模式