{
"assistant_response": "## Dependency Injection (DI)\n\n**Prinzip:** Abhängigkeiten werden von außen übergeben, nicht intern erstellt.\n\n### Ohne DI (schlecht)\n```python\nclass UserService:\n def __init__(self):\n self.db = Database() # Selbst erstellt - fest verdrahtet\n```\n\n### Mit DI (gut)\n```python\nclass UserService:\n def __init__(self, db: DatabaseInterface): # Von außen injiziert\n self.db = db\n```\n\n### Vorteile\n\n| Aspekt | Ohne DI | Mit DI |\n|--------|---------|--------|\n| Testbar | Schwer (echte DB nötig) | Einfach (Mock übergeben) |\n| Flexibel | Nein (fest verdrahtet) | Ja (austauschbar) |\n| Kopplung | Hoch | Niedrig |\n\n### Beispiel Test\n```python\n# Mit DI: Mock injizieren\nmock_db = MockDatabase()\nservice = UserService(db=mock_db) # Kein echter DB-Zugriff\n\n# Ohne DI: Unmöglich zu mocken\nservice = UserService() # Erstellt intern echte DB\n```\n\n**Kurzformel:** \"Don't call us, we'll call you\" - Klassen fordern Abhängigkeiten an, erstellen sie nicht selbst."
}