- 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.
- Citrix XenApp Performance Essentials
- Linux實戰
- Hands-On DevOps with Vagrant
- FreeRTOS實時內核應用指南
- 開源安全運維平臺OSSIM疑難解析:入門篇
- Linux操作系統應用編程
- Linux自動化運維:Shell與Ansible(微課版)
- 計算機系統的自主設計
- iOS 8開發指南
- Linux設備驅動開發
- Windows 8實戰從入門到精通(超值版)
- Red Hat Enterprise Linux 6.4網絡操作系統詳解
- Windows 7實戰從入門到精通
- Hands-On GPU Programming with Python and CUDA
- Agile IT Security Implementation Methodology