Артем
2021-01-01 14:41
Это реализация паттерна Декоратор?

Разработка прокси-объекта для гибкого настраиваемого кеширования результатов геолокации.
Чтобы не пропускать новые эпизоды подпишитесь на наш канал @deworkerpro в Telegram

Это реализация паттерна Декоратор?
Для кэширования это уже не просто Декоратор, а Заместитель (Прокси).
выходит если первый сервер недоступен и он в приоритете то при каждом запросе мы будем к нему стучаться и если он отвалился на долго то это не очень
Лучше наверное переместить ChainLocator внутрь CacheLocator и тогда если первый сервис не доступен, закешируется результат второго сервиса на определенное время, после того как кэш протухнет например через час, тогда будем снова пытаться постучаться к первому сервису, если его починили, закэшируем его результат.
Здесь рассматривается случай, когда есть сервис, которому мы больше доверяем. В этом случае желательно получить именно его данные. Для этого помещается выше и оборачивается в CacheLocator.
Можно сделать простую реализацию CircuitBreaker. При ошибке кэшировать по специальному ключу, что была ошибка. Пока этот ключ не протух, запросы к локатору не делать.