In JDK there are many places where Chain of Responsibility design
pattern is used. Some of these are as follows:
1. java.util.logging.Logger.log(): In this case Logger class
provides multiple variations of log() method that can take
the responsibility of logging from client in different
scenarios. The client has to just call the appropriate log()
method and Logger will take care of these commands.
2. javax.servlet.Filter.doFilter(): In the Filter class, the
Container calls the doFilter method when a
request/response pair is passed through the chain. With
filter the request reaches to the appropriate resource at the
end of the chain. We can pass FilterChain in doFilter()
method to allow the Filter to pass on the request and
response to the next level in the chain.
https://www.digitalocean.com/community/tutorials/chain-of-responsibility-design-pattern-in-java