Was ist eine gute Analogie, um IoC und DI zu verstehen?Was ist eine gute Analogie, um IoC und DI zu verstehen?
Antwort
Wenn Sie das klassische Beispiel eines Auto nehmen. Sie könnten den regulären Auto Kaufprozess durchlaufen und nehmen Sie die Räder der Hersteller gibt Ihnen:
public class Fifteens
{
public void Roll() { Console.WriteLine("Nice smooth family ride..."); }
}
public class Car
{
Fifteens wheels = new Fifteens();
public Car() { }
public void Drive() { wheels.Roll; }
}
Dann:
Car myCar = new Car();
myCar.Drive() // Uses the stock wheels
Oder Sie könnten einen benutzerdefinierten Autobauer finden, die Sie genau angeben können, welche Art von Rad Sie Ihr Auto zu benutzen, solange sie den Spezifikationen eines Rades entsprechen:
public interface IWheel
{
void Roll();
}
public class Twenties : IWheel
{
public void Roll() { Console.WriteLine("Rough Ridin'...");
}
public class Car
{
IWheel _wheels;
public Car(IWheel wheels) { _wheels = wheels; }
public void Drive() { wheels.Roll(); }
}
Dann:
Car myCar = new Car(new Twenties());
myCar.Drive(); // Uses the wheels you injected.
Aber jetzt können Sie jede Art von Rad injizieren, die Sie wollen. Beachten Sie, dass dies nur eine Art von Dependency Injection (Konstruktor Injektion) ist, aber es ist eines der einfachsten Beispiele.
Martin Fowler macht eine gute Arbeit explaining those patterns.
Es gibt ein paar verschiedene Analogien, die das Verständnis der Inversion der Kontrolle erleichtern. Wir erleben dies auf viele verschiedene Arten im normalen Leben, also leihen wir das Formular im Code aus. Eine Analogie wird im Militär als "Befehlskette" bezeichnet.
Dies ist wahrscheinlich die klarste Parallele zur Inversion der Kontrolle. Das Militär stellt jedem neuen Rekruten die grundlegenden Dinge zur Verfügung, die er benötigt, um in seinem Rang zu operieren, und er gibt Befehle aus, die Rekruten befolgen müssen. Das gleiche Prinzip gilt für den Code. Jede Komponente erhält die Bestimmungen, die sie benötigt, um von der instanziierenden Einheit (d. H. Kommandierender Offizier in dieser Analogie) zu operieren. Die Instanziierungseinheit wirkt dann auf diese Komponente ein, wie sie agieren muss.
Mehr hier:
- 1. Javascript IoC/DI-Frameworks
- 2. Warum ist MEF kein DI/IoC-Container?
- 3. Wie man Findbugs unterrichtet, um IoC-Felder richtig zu verstehen?
- 4. Mehrere Sprachkomponenten/Klassen [OOP/Patterns/IoC/DI]
- 5. Was ist eine gute Methode, um ASP.NET-Verbindungsprobleme zu diagnostizieren?
- 6. Was ist eine gute Methode, um einen Befehlsnamen zu erfinden?
- 7. Was ist eine gute Beispielklasse, um TDD zu demonstrieren?
- 8. Was ist eine gute Bibliothek, um Apache2-Konfigurationsdateien zu manipulieren?
- 9. Design von Interface vs IoC/DI
- 10. Was ist Frühling IOC
- 11. Hilfe bekommen DI/IoC im Haus
- 12. Was ist eine korrekte und gute Möglichkeit, __hash __() zu implementieren?
- 13. IoC/DI-Container, der Compact Framework unterstützt
- 14. MEF (Managed Extensibility Framework) vs. IoC/DI
- 15. Was ist eine gute Methode, um RTF-kodierte Dateien zu verarbeiten und in XML zu konvertieren?
- 16. Warum wird ein IoC/DI-Container als "Container" bezeichnet?
- 17. Was ist eine gute Methode, um zurückgegebene Daten von MySQL und C# zu verarbeiten?
- 18. Was ist eine gute Möglichkeit, um Seitenumbruch und Nicht-Abfrage-Gruppierung in Slick 3.0 zu kombinieren?
- 19. Gibt es eine Julia-Analogie zu numpy.argmax?
- 20. Was ist eine gute Auszeichnungssprache für Tests?
- 21. Was ist eine gute Metapher für Dependency Injection?
- 22. Lokalisierung mit einem DI-Framework - gute Idee?
- 23. Um eine Zeile von jQuery zu verstehen
- 24. Was ist eine gute Heuristik für Tweets?
- 25. Was ist Cs Analogie zur Ereignisstruktur von LabVIEW?
- 26. Was ist eine gute Faustregel-Gleitkommavergleichsmethode?
- 27. Was ist eine gute Möglichkeit, einen Vektor * vorübergehend * zu sortieren?
- 28. Was ist eine gute Möglichkeit, Sub/Pub zu dokumentieren?
- 29. Wie soll ich meine CTor-Parameter für DI/IOC bestellen?
- 30. Was ist eine gute Möglichkeit, Django-Apps zu verpacken?
Duplizieren: http://stackoverflow.com/questions/424457/does-anyone-have-a-good-analogy-for-dependency- injection –
Siehe auch http://stackoverflow.com/questions/1638919/how -zu-erklären-Abhängigkeit-Injektion-zu-5-Jahre alt –
Überprüfen Sie dies: http://www.jamesshore.com/Blog/Dependency-Injection-Demystified.html – Vishal