middleware VS decorator
Часто, мидлвары и декораторы сравнивают на уровне реализации, но это не самая важная часть вопроса. Хотя, рекомендую погуглить этот вопрос.
Важнее то что наличие мидлвары всегда implicit (не явное) для интерфейса домена, а вот наличие декоратора explicit (явное), что выражается, например, в изменении входных параметров.
Мидлвара добавляется в общий сервис обработки фич и описывает (обрабатывает) общую для всех логику. Декоратор добавляется точечно к каждой фиче и настраивает ее индивидуально.
Проблемы в этом две. Первая - человеку и программисту в частности удобно все обобщать и тк мидлвара и декортатор решают одну и ту же задачу по добавлению дополнительной общей логики, хочется использовать один инструмент, вместо того что бы каждый раз выбирать между двух. Это чаще всего решается общей культурой разработки у команды и ее лидеров.
Вторая - что делать, если появляется фича которой не нужна логика из общей мидлвары - у нее появляется конфигурация исключения. Или вы замечаете что какой-то декоратор применяется в большинстве фич, но не во всех - тут проблем меньше, просто не добавляем его там где нужно.
Но нет общего решения, когда выбирать не везде применимые декораторы или не всегда работающую мидлвару. Важно отталкиваться от семантики паттернов: если какая-то общая логика никак не влияет на работу фичи - это мидлвара, иначе декоратор.
Часто, мидлвары и декораторы сравнивают на уровне реализации, но это не самая важная часть вопроса. Хотя, рекомендую погуглить этот вопрос.
Важнее то что наличие мидлвары всегда implicit (не явное) для интерфейса домена, а вот наличие декоратора explicit (явное), что выражается, например, в изменении входных параметров.
Мидлвара добавляется в общий сервис обработки фич и описывает (обрабатывает) общую для всех логику. Декоратор добавляется точечно к каждой фиче и настраивает ее индивидуально.
Проблемы в этом две. Первая - человеку и программисту в частности удобно все обобщать и тк мидлвара и декортатор решают одну и ту же задачу по добавлению дополнительной общей логики, хочется использовать один инструмент, вместо того что бы каждый раз выбирать между двух. Это чаще всего решается общей культурой разработки у команды и ее лидеров.
Вторая - что делать, если появляется фича которой не нужна логика из общей мидлвары - у нее появляется конфигурация исключения. Или вы замечаете что какой-то декоратор применяется в большинстве фич, но не во всех - тут проблем меньше, просто не добавляем его там где нужно.
Но нет общего решения, когда выбирать не везде применимые декораторы или не всегда работающую мидлвару. Важно отталкиваться от семантики паттернов: если какая-то общая логика никак не влияет на работу фичи - это мидлвара, иначе декоратор.