Паттерн «Цепочка обязанностей» (Chain of Responsibility) относится к поведенческим паттернам проектирования и используется для организации объектов в цепочку и последовательной обработки запросов, пока один из объектов не сможет обработать запрос. Каждый объект в цепочке имеет возможность либо обработать запрос, либо передать его следующему объекту в цепочке. Основная идея паттерна «Цепочка обязанностей» заключается в создании абстрактного класса или интерфейса, который определяет метод обработки запроса и ссылку на следующий объект в цепочке. Каждый объект в цепочке реализует этот интерфейс и решает, может ли он обработать запрос или передать его следующему объекту. Пример реализации паттерна «Цепочка обязанностей» на языке Java: // Интерфейс обработчика запроса public interface Handler { void setNextHandler(Handler nextHandler); void handleRequest(Request request); } // Конкретный обработчик public class ConcreteHandler implements Handler { private Handler nextHandler; public void setNextHandler(Handler nextHandler) { this.nextHandler = nextHandler; } public void handleRequest(Request request) { if (canHandle(request)) { // Обработка запроса } else if (nextHandler != null) { nextHandler.handleRequest(request); } } private boolean canHandle(Request request) { // Логика проверки, может ли обработчик обработать запрос } } // Класс запроса public class Request { // Данные запроса } В данном примере у нас есть интерфейс Handler, который определяет методы setNextHandler() для установки ссылки на следующий обработчик и handleRequest() для обработки запроса. Класс ConcreteHandler реализует этот интерфейс и решает, может ли он обработать запрос или передать его следующему обработчику. Класс Request представляет запрос, который будет передаваться по цепочке обработчиков. Теперь мы можем создать цепочку обработчиков и передать запрос по этой цепочке. Например: Handler handler1 = new ConcreteHandler(); Handler handler2 = new ConcreteHandler(); Handler handler3 = new ConcreteHandler(); handler1.setNextHandler(handler2); handler2.setNextHandler(handler3); Request request = new Request(); handler1.handleRequest(request); Паттерн «Цепочка обязанностей» позволяет организовать объекты в цепочку и последовательно обрабатывать запросы. Это обеспечивает гибкость в добавлении, удалении и изменении обработчиков запросов.