тут как бы не совсем только с кэшом, а кэш и некоторая связанная бизнес-логика. То есть, это не отдельный класс для кэширования, а прослойка для принятия решения - нужно ли выдавать кэш или надо пойти в сеть
Cache strategies. Вопрос не в "выдавать или пойти", вопрос в "валиден ли кэш", если нет -> всё остальное для его актуализации. Ну и особняком вообще не требующие\некэшируемые данные. Изменения из других источников при изменении будут просто сбрасывать валидность связанных с собой. Т.е. репозиторий лезть не будет, но процессы с другими репозиториями будут влиять не на целевой, но на все связанные. Итого: вся логика кеша, кроме хранения хранить факт валидности. Может, у кого-то будет более комфортное решение.