Я испытываю желание сказать, что это хорошо работает для неспецифической проблемы (например, код фреймворка), но менее эффективно для специфических проблем. Фреймворки написаны для использования другими людьми, и вы хотите предоставить клиенту полную свободу реализации. Как только вы точно знаете, что собираетесь делать для решения проблемы, я думаю, что другие решения лучше.
Опасность шаблона «Цепочка ответственности» практически такая же, как и для шаблона «Классная доска»: в конечном итоге действительно легко создать множество абстракций, которые в основном не обеспечивают ценность в достижении конечной цели. Командные объекты и объекты обработки на самом деле просто скрывают логику вашего приложения за цепочкой обработки, а не помещают ее прямо туда, где находится ваш самый важный код. Это гораздо легче понять и поддерживать, если вы просто запрограммируете метод (или несколько методов), который представляет полную цепочку обработки без абстракций цепочки обработки. Цепочка обработки действительно может скрыть бизнес-логику вашего приложения, и я думаю, что вы отдаете предпочтение техническому артефакту над бизнес-кодом.
Таким образом, в основном вы заменяете то, что могло бы быть очень простым кодом приложения, который очень легко читает гораздо более абстрактными цепочками обработки. Вы занимаетесь метапрограммированием. Лично я никогда больше не занимаюсь метапрограммированием, поэтому я склонен согласиться с теми коллегами, которым это не нравится. ;)