Допустим, я в настоящее время разрабатываю приложение, в котором мне нужно будет использовать глобальную систему синхронизации (это сквозная проблема). Мне нужно получить доступ к данным из этой глобальной системы синхронизации практически из любого места в моем приложении, и я не вижу, что «эта часть приложения будет нуждаться в ней, а другая - нет».
У меня вопрос: должен ли я проектировать это как некий Ambient Context (в данном случае Singleton), или я должен попытаться придумать другой способ приспособиться к этому?
Я, конечно, не считаю правильным, чтобы все мои классы передавали им этот глобальный класс синхронизации с помощью инжектора конструктора. Много времени, я должен был бы передать ссылку действительно вниз по цепочке, пока некоторый класс в конечном счете не нуждается в этом. С другой стороны, с точки зрения чтения все стало бы более понятным (стало ясно, каковы мои классовые зависимости).
Как люди обычно справляются с этим? Есть ли какие-либо другие методы, которые могут помочь с этим? АОП может быть?
PS: Глобальная система синхронизации была просто идеей, которую я взял из книги, которую я сейчас читаю. Система журналирования была бы еще одним хорошим примером такого рода проблем.
Спасибо