![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/f47/81f/c89/f4781fc89e0ec430a64c95144a79a8dd.png)
Service Locator (или “локатор служб”) — хорошо всем нам известный паттерн. Поскольку он был описан Мартином Фаулером, он должен быть хорошим, ведь так?
К сожалению нет, на практике это классический пример антипаттерна, который следует избегать.
Давайте разберемся, что с ним не так. Если отвечать коротко, то проблема с Service Locator заключается в том, что он скрывает зависимости класса, что вызывает ошибки времени выполнения вместо ошибок времени компиляции, а также усложняет сопровождение кода, потому что становится не совсем ясно, какие изменения окажутся критическими.