Мой коллега утверждает, что кэш не м.б. опциональной зависимостью и мы всегда должны его требовать как ненулевой параметр конструктора при DI.
Я же считаю, что null-object паттерн вполне подходит для кэша, т.к. это инфраструктурный и оптимизационный слой, который пользователь класса может инжектить по мере возникновения проблем.