Заюзали на проекте с ларавел или нет? Если да, хотелось бы прочитать это в статья. Эти спецификации применяются уже после выборки из бд у вас или как? - если да, то не кажется ли не совсем хорошей идеей брать все товары из базы, а потом фильтровать ненужные? - если нет, тогда как это реализовано? Спецификации вносят изменения в запрос к бд? В чём преимущества перед, например, добавлением query scope availableProducts в котором будут определены те же критерии получения продуктов (наличие, статус visible) и при изменении условий мы также изменим только одно место - скоуп. За статью лайк в любом случае 😉