Filter和Listener的设计模式

简介: Filter和Listener的设计模式

在Servlet的Filter中使用的责任链设计模式。
责任链模式特点
责任链(Chain of Responsibility):责任链模式也叫职责链模式,是一种对象行为模式。在责任链模式里,很多对象由每一个对象对其下一个对象的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不需要知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。
责任链的优缺点
优点:
降低了对象之间的耦合度。
增强了系统的可扩展性。
增强了给对象指派职责的灵活性。
责任链简化了对象之间的连接。
责任分担。每个类只需要处理自己该处理的工作。
缺点:
不能保证请求一定被接收。
对比较长的责任链,请求的处理可能涉及多个处理对象,系统性能将受到一定影响。
可能会由于责任链的错误设置而导致系统出错,如可能会造成循环调用。
Listener的设计模式
在Servlet的Listener中使用的观察者设计模式。
观察者模式的特点
观察者模式(Observer Pattern):观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
观察者模式的优缺点
优点:
观察者和被观察者是抽象耦合的。
建立一套触发机制。
缺点:
如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。
如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。
观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。

相关文章
|
开发框架 数据可视化 安全
功能驱动方法是什么?如何有效管理技术债务以避免项目风险?
本文探讨了功能驱动方法(FDD)与技术债务的概念及相互关系。FDD是一种高效的敏捷开发方式,强调根据客户需求快速开发独立功能;而技术债务指项目中未解决的技术问题,可能增加未来的维护成本和风险。文章详细介绍了FDD的五个核心步骤、优势,以及技术债务的成因、风险和管理策略,旨在帮助项目团队有效降低风险,确保项目可持续发展。
223 5
功能驱动方法是什么?如何有效管理技术债务以避免项目风险?
|
10月前
|
设计模式 架构师 安全
一文详解架构设计的本质
本文分为三个部分,从思维讲起到系统逆向分析,到后面的正向设计。从“道,理,术”三个角度诠释了系统架构设计的全面知识体系。
|
Java 测试技术 API
《手把手教你》系列技巧篇(五十五)-java+ selenium自动化测试-上传文件-下篇(详细教程)
【5月更文挑战第19天】本文介绍了在Web自动化中处理文件上传的挑战,由于Selenium WebDriver不直接支持文件上传,因此需要借助外部工具。文章提到了两种主要的上传方式:基于input框的上传和非input控件的上传。对于非input控件的上传,推荐使用AutoIt,这是一个支持Windows GUI自动化的工具。
249 9
idea中新建分支并且切换到新建的分支上
idea中新建分支并且切换到新建的分支上
1150 0
|
SQL 存储 关系型数据库
Mysql 的InnoDB引擎下支持hash索引吗?
Mysql 的InnoDB引擎下支持hash索引吗?
1083 0
Mysql 的InnoDB引擎下支持hash索引吗?
|
前端开发
react实现页面多个模块的切换
react实现页面多个模块的切换
react实现页面多个模块的切换
|
Cloud Native 数据库 Docker
云原生之使用Docker部署Dokuwiki个人笔记工具
云原生之使用Docker部署Dokuwiki个人笔记工具
1123 0
|
XML SQL 数据格式
Invalid bound statement (not found)错误的可能原因
Invalid bound statement (not found)错误的可能原因
1106 0
|
JavaScript
Selenium成长之路-25 日历控件的处理
Selenium成长之路-25 日历控件的处理
385 0
Selenium成长之路-25 日历控件的处理
|
Arthas 小程序 前端开发
抖音小程序集成支付宝支付
抖音小程序集成支付宝支付
1694 0
抖音小程序集成支付宝支付