Dependency Injection unterschied zum Factory – Pattern?

Von | 26. August 2011

Ein Begriff der langsam aber sicher von vielen PHP Entwicklern in den Mund genommen wird „Dependency Injection (Wikipedia)“, worum geht es dabei? Nach meinem Verständnis um das Auflösen von Abhängigkeiten in der Objekt-Orientierten PHP Entwicklung. Bei den Java Jungs ist die Thematik schon lange bekannt, in der Welt der PHP Entwickler wird es langsam.

Eine gute allgemeine Erklärung zu dem Thema im PHP Umfeld bietet Ralph Shindler in seinem Blog, hier wird das ganze recht anschaulich erläutert.

Was mir bisher bei dem Konzept vollkommen unklar war, wo liegt den der Unterschied zwischen Dependency Injection und dem Factory Pattern? Das Factory Pattern erzeugt schließlich auch Objekte mit allen benötigten Abhängigkeiten?

Geholfen, dass ganze zu verstehen, haben mir ein paar Einträge bei Stackoverflow, die ich hier gerne zitieren möchte um sie „nie“ mehr zu vergessen!

When using a factory your code is still actually responsible for creating objects, by DI you outsource that responsibility to a framework which is separate from your code. (willcodejavaforfood)

I would suggest to keep the concepts plain and simple. Dependency Injection is more of a architectural pattern for loosely coupling software components. Factory pattern is just one way to separate the responsibility of creating objects of other classes to another entity. Factory pattern can be called as a tool to implement DI. Dependency injection can be implemented in many ways like DI using constructors, using mapping xml files etc. (Perpetualcoder)

Nach der ganzen Theorie, ist es glaube ich an der Zeit auch mal irgendein PHP Dependency Injection Framework zu testen, insbesondere da dieses Konzept auch im Zend Framework 2.0 vorhanden sein wird (Erläuterungen zu DI im Zend Framework 2).

Dependency Injection Frameworks für PHP: