попробую еще раз. Мой последний ответ пропустил вопрос на милю и приблизил тему.
Используя псевдокод, инъекция зависимостей выдает:
class Person
def Chat() {
someOperation("X","Y","Z")
end
end
...
Person.new().Chat()
и в с:
class Person
initialize(a,b,c)
@a=a
@b=b
@c=c
end
def Chat()
someOperation(@a,@b,@c)
end
end
...
Person.new("X","Y","Z").Chat()
,., И, как правило, для помещения объекта и вызова в разные файлы для целей SCM.
Являются ли "X", "Y" или "Z" насмешливыми (... если бы они были объектами ... (!) ... (!) ...) вообще не имеют ничего общего с тем, Д.И. это хорошо. В самом деле. : -)
DI проще в Python или Ruby, как и во многих других задачах, потому что есть больше сценариев, как говорит Йорг; а также, конечно, меньше культуры и тенденции, согласно которой константы и адаптеры должны быть включены в модели и глобальные константы.
С практической точки зрения для меня DI - это первый шаг к разделению этих параметров приложения, констант API и фабрик в отдельные файлы, чтобы сделать ваш отчет по отслеживанию ревизий менее похожим на спагетти («Были ли эти дополнительные проверки в AppController изменены» Конфигурация ..? Или обновить код ...? ") и более информативным, и более легким для чтения.
Моя рекомендация: продолжайте использовать DI ...: -)