Здравствуйте, ·. ·>Почему бы не сделать явную передачу зависимости?
В общем случае так лучше. Явно видная зависимость — это хорошо и к этому следует стремиться.
Но так не всегда получается сделать код простым. Например, в случае с некоторым ресурсом, который должен освобождаться сразу после использования. При инициализации необходимо по-разному настроить в зависимости от окружения (prod, test, dev). В этом случае использовать некий DEFAULT не получится, т.к. надо создавать объект каждый раз. А чтобы не усложнять конструктор объекта использовать monkey patch. В этом случае все сведется к решению со статик-переменной.