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

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

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

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

上面程序的执行输出是

 

再加一个过滤器

下面来看一段程序

输出结果

和过滤器是否非常相识

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

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

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

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

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

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

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

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

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

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

http://www.lryc.cn/news/156798.html

相关文章:

  • Redis7安装配置
  • 切分支解决切不走因为未合并的路径如何解决
  • 自动化运维:Ansible之playbook基于ROLES部署LNMP平台
  • SpringBoot整合MQ
  • 算法训练day37|贪心算法 part06(LeetCode738.单调递增的数字)
  • 【C++基础】4. 变量
  • jmeter setUp Thread Group
  • 图神经网络教程之GCN(pyG)
  • python中的逻辑运算
  • TortoiseGit设置作者信息和用户名、密码存储
  • Fragment.OnPause的事情
  • 【C++基础】5. 变量作用域
  • Python列表排序
  • (云HIS)云医院管理系统源码 SaaS模式 B/S架构 基于云计算技术
  • sql:SQL优化知识点记录(十一)
  • leetcode-链表类题目
  • 数据结构——哈希
  • 效果好的it监控系统特点
  • leetcode1288. 删除被覆盖区间(java)
  • Python 虚拟环境相关命令
  • 使用U盘同步WSL2中的git项目
  • Stable Diffuse AI 绘画 之 ControlNet 插件及其对应模型的下载安装
  • CMAK学习
  • Python 推导式
  • es6的新特性有哪些
  • logstash 消费kafka数据,转发到tcp端口
  • 航天智信:严控航天系统研发安全,助力建设“航天强国”
  • 阿里云2核4G服务器5M带宽五年租用价格表
  • 基于Laravel通用型内容建站企业官网系统源码 可免费商用
  • 风力发电常见问题