Dependency Injection

Dependency Injection

Dependency Injection (DI) ist ein Entwurfsmuster und dient in einem objektorientierten System dazu, die Abhängigkeiten zwischen Komponenten oder Objekten zu minimieren.

Dependency Injection ist eine Anwendung des Prinzips der Inversion of Control (IoC), bezieht sich aber nur auf die Erzeugung und Initialisierung von Objekten. Sie kann als Verallgemeinerung der Fabrikmethoden verstanden werden. Die Funktionalität bleibt trotz dieser Kontrollumkehr als Einfügung enthalten. Dadurch ist es einfach möglich, Abhängigkeiten zu erkennen.

In einem klassisch aufgebauten OO-System ist jedes Objekt selbst dafür zuständig, seine Abhängigkeiten, also benötigte Objekte und Ressourcen, zu erzeugen und zu verwalten. Dafür muss jedes Objekt einige Kenntnisse seiner Umgebung mitbringen, die es zur Erfüllung seiner eigentlichen Aufgabe normalerweise nicht benötigen würde. Insbesondere muss es, um die entsprechenden Objekte erzeugen zu können, ihre konkrete Implementierung kennen.

Dependency Injection überträgt die Verantwortung für das Erzeugen und die Verknüpfung von Objekten an ein extern konfigurierbares Framework, entsprechend einem Komponentenmodell. Dadurch wird der Code des Objektes unabhängig von seiner Umgebung und von der konkreten Umsetzung der Klassen, die es benötigt. Das vermeidet unnötige Abhängigkeiten beim Kompilieren und erleichtert besonders die Erstellung von Unit-Tests.

Nachteilig kann sich hingegen je nach verwendetem DI-Framework auswirken, dass Programmlogik in Konfigurationsdateien ausgelagert werden muss, was die Übersichtlichkeit vermindern und die Wartung erschweren kann: die Entwickler müssen nun zum Verstehen des Codes noch die Konfiguration berücksichtigen, welche sich zudem manchen Hilfsmitteln der Codeanalyse (z. B. IDE-unterstütztes Finden von Abhängigkeiten oder Refactoring) entzieht.

Inhaltsverzeichnis

Existierende Frameworks

Es existieren verschiedene Frameworks für diverse Programmiersprachen und Plattformen, die Dependency Injection unterstützen:

C++

  • PocoCapsule/C++ IoC und DSM Framework

Java

  • CDI (Context and Dependency Injection), Standard für DI (JSR-299 [1]) (was eine Rahmenrichtlinie ist und durch verschiedene Frameworks wie z.B. Seam Weld in Java EE 6 umgesetzt wird)
  • EJB ab Version 3.0
  • Spring
  • PicoContainer
  • Seam
  • Guice
  • simject
  • JBoss Microcontainer ab JBoss Application Server 5.0

PHP 5

  • Garden (wird nicht mehr weiterentwickelt)
  • Stubbles IoC
  • Enterprise-PHP-Framework
  • Symfony Components (BETA), Opensource PHP Standalone Classes
  • Symfony2, Open-Source PHP Framework
  • FLOW3, Open-Source PHP Framework
  • Phemto
  • PicoContainer for PHP
  • pinjector
  • Zend Framework 2 (BETA), Opensource PHP Framework

Ruby

  • Copland
  • Needle

Python

  • PyContainer
  • SpringPython
  • snake-guice
  • python-inject

.NET

  • Autofac
  • Ninject
  • Spring.NET
  • Structuremap
  • Unity Application Block (Unity)
  • Puzzle.NFactory
  • Castle MicroKernel und Windsor Container
  • NauckIT.MicroKernel
  • Managed Extensibility Framework
  • ObjectBuilder
  • PicoContainer.NET
  • WINTER4NET
  • LightCore
  • OpenNETCF.IoC

ColdFusion

  • ColdSpring
  • LightWire

Actionscript

  • Swiz
  • Parsley
  • Cairngorm 3
  • Robotlegs

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Dependency injection — (DI) is a design pattern in object oriented computer programming whose purpose is to improve testability of, and simplify deployment of components in very large software systems. The Dependency Injection pattern involves at least three elements:… …   Wikipedia

  • dependency injection — noun A process of supplying an external dependency to a software component. See Also: DI, inversion of control …   Wiktionary

  • Dependency Injection — …   Википедия

  • Injection — may refer to:* Injection (medicine), a method of putting liquid into the body with a syringe and a hollow needle that punctures the skin. * Injective function in mathematics, a function which associates distinct arguments to distinct values *… …   Wikipedia

  • Injection De Dépendances — L injection de dépendances (Dependency Injection) est un mécanisme qui permet d implanter le principe de l Inversion de contrôle. Il consiste à créer dynamiquement (injecter) les dépendances entre les différentes classes en s appuyant… …   Wikipédia en Français

  • Injection de dependances — Injection de dépendances L injection de dépendances (Dependency Injection) est un mécanisme qui permet d implanter le principe de l Inversion de contrôle. Il consiste à créer dynamiquement (injecter) les dépendances entre les différentes classes… …   Wikipédia en Français

  • Dependency inversion principle — In object oriented programming, the dependency inversion principle refers to a specific form of decoupling where conventional dependency relationships established from high level, policy setting modules to low level, dependency modules are… …   Wikipedia

  • Injection de dépendances — L injection de dépendances (Dependency Injection) est un mécanisme qui permet d implanter le principe de l inversion de contrôle. Il consiste à créer dynamiquement (injecter) les dépendances entre les différentes classes en s appuyant… …   Wikipédia en Français

  • Injection de dépendance — Inversion de contrôle L inversion de contrôle (Inversion of Control, IoC) est un patron d architecture commun à tous les frameworks (ou cadre de développement et d exécution). Il fonctionne selon le principe que le flot d exécution d un logiciel… …   Wikipédia en Français

  • Drug injection — Shoot up redirects here. For shooting video game genre, see Shoot em up. This article is not about medical practice. For medical practices, see Intramuscular injection or Intravenous therapy. A piece of a hypodermic needle, as seen on X ray, in… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”