Еще один способ задать этот вопрос: что такое Инверсия Контроля по вашему мнению?
Я задаю этот вопрос, потому что статья в Википедии о IoC была похищена по не-ОО-объяснению. Это взято со страницы обсуждения и от 2007 года:
Я позволил себе полностью переписать страницу, так как предыдущий контент был полностью поглощен бессмысленным "объектно-ориентированным" болтовней ...
Я не понимаю, как Inversion of Control имеет какой-либо смысл вне языка OO. Уже есть много объяснений отказа от управления в процедурных языках (программирование событий - одно), и чисто функциональные языки не нуждаются в таком понятии, как инверсия управления, поскольку они имеют функции более высокого порядка.
Кроме того, в статье , где Мартин Фаулер разрабатывает IoC, он исключительно обрабатывает ОО-примеры.
Итак, является ли IoC исключительно концепцией ОО и что это такое?
Для меня IoC пытается превратить функции в данные в рамках ограничений, которые накладывает большинство языков OO, и пытается передать эти функции как данные в качестве аргументов другим функциям. Это не единственная часть IoC, но есть некоторые из них.
Существует также шаблон проектирования фабрики, где деревья объектов строятся и конфигурируются перед передачей.
Для меня IoC является исключительно концепцией ОО.
Какой у вас ответ?