- Java EE 8 Design Patterns and Best Practices
- Rhuan Rocha Jo?o Purifica??o
- 328字
- 2021-07-23 16:54:52
Explaining intercepting filter pattern
When a client sends a request to the server, the server sometimes processes this request/response to perform the following tasks:
- Validating authentication
- Generating log
- Validating constraints
- Verifying the browser of the client
- Checking the duration between the request and response; calculating the response time
- Setting a cookie
However, we don't want to put these tasks within the logic of processing the main request. Consequently, creating a pre-process and/or post-process to do these tasks is a good method for decoupling the main logic from the complementary logic.
The intercepting filter pattern is the pattern that solves problems when we want to insert a logic that is not part of the main logic but we want to keep the two logics separated and decoupled. Merging the new logic with the main logic is a bad practice because these become coupled. This pattern creates a filter to pre-process and post-process the request, permitting the creation of a logic block to solve some problems that are not part of the main problem, and thus decoupling both pieces of logic. Using this pattern, we can create a pluggable solution without modifying the main logic. Take a look at the model of the intercepting filter pattern in the following diagram:

In the preceding diagram, we have a Client, FilterManager, FilterChain, FilterOne, FilterTwo, FilterThree, and Target. The client sends a request to the server; the FilterManager creates a FilterChain with its filters ordered and initiates the processing; the FilterChain is an ordered collection of independent filters; FilterOne, FilterTwo, and FilterThree are the filters in the FilterChain, which can include N filters; Target is the resource that contains the main logic. The order of filter execution is important because some filters often need to be executed first. An example of filter priority is the task of validating authentication, which generally needs to be executed first because some tasks are executed after client authentication only.
- Kubernetes修煉手冊
- 操作系統實用教程(Linux版)
- Linux設備驅動開發詳解:基于最新的Linux4.0內核
- Linux從零開始學(視頻教學版)
- SOA實踐者說
- 嵌入式Linux驅動程序和系統開發實例精講
- 異質結原理與器件
- Windows Phone應用程序開發
- Python UNIX和Linux系統管理指南
- 分布式高可用架構之道
- Learning Continuous Integration with Jenkins(Second Edition)
- Agile IT Security Implementation Methodology
- 15分鐘!畫出我的漫畫角色:賣萌篇
- Instant Responsive Web Design
- OpenSolaris系統管理