Паттерн Chain of responsibility.

Что это и когда его применять?

Это поведенческий паттерн, который позволяет передавать запросы последовательно по цепочке обработчиков. Каждый последующий обработчик решает, может ли он обработать запрос сам и стоит ли передавать запрос дальше по цепи. Каждый объект в цепи имеет ссылку на следующий обработчик в цепи