Паттерн Chain of Responsibility используется по всему Java Development Kit (JDK) для обработки запросов, пропуская их через цепочку обработчиков. Каждый обработчик решает, обработать ли запрос или передать его следующему обработчику в цепи.
Метод java.util.logging.Logger.log() — это наглядный пример этого паттерна. Класс Logger предоставляет несколько перегруженных методов log(), которые обрабатывают запросы логирования в разных сценариях:
log() в зависимости от своих нуждМетод javax.servlet.Filter.doFilter() демонстрирует паттерн при обработке веб-запросов:
doFilter(), когда пара запрос/ответ входит в цепочку фильтровFilterChain позволяет фильтрам передавать управление дальше: chain.doFilter(request, response)Эти реализации в JDK показывают преимущества паттерна:
В Java фреймворке логирования метод Logger.log() позволяет клиентам вызвать подходящий перегруженный метод в зависимости от своих потребностей, а сам Logger берёт на себя ответственность за обработку команды логирования, не раскрывая структуру цепочки клиенту.
Новый — ещё не проверен сообществом
Вы