Метафора, которая застряла у меня при программировании не-DI-систем - это «человек, играющий со своими игрушками». Человек, являющийся объектом, а игрушки человека - это все, что объект создает, хранит, инициализирует и манипулирует. Игрушки могут отправлять события, когда достигают определенного состояния, но они ничего не знают о человеке, использующем их; это просто маленькие черные ящики с управляющими переключателями, которые составляют их интерфейсы. Человек может слушать события от игрушек и реагировать, управляя их интерфейсами. Человек может делать со своими игрушками все, что он хочет, но ему / ей, вероятно, не следует вмешиваться в их внутренности, потому что они могут сломаться.
Хаос, который DI наносит на мою метафору, состоит в том, что он превращает игрушки в сознательных существ, которые знают своего владельца, человека, использующего их. Игрушки могут манипулировать этим человеком, но человек ничего не знает о том, как они работают, и ему все равно. Человек просто владеет игрушками и ожидает, что игрушки будут манипулировать им / ей для удовлетворения собственных игрушек.
WTF ?? Звучит ужасно !!
Какую ментальную метафору они используют, чтобы подумать о том, как работают системы DI?