DIP-vs. DI vs. IoC

Seit etwa 2 Monaten, die ich gelesen habe alles, was ich finden kann für diese 3 Themen und ich bin mir noch nicht sicher, ob ich es bekam.

  1. Dependency Inversion Prinzip. Heißt, Sie sollten immer nur verlassen sich auf Schnittstellen und nicht auf deren Umsetzung. Wenn Ihre Klasse hängt von einer anderen Klasse, das ist schlecht, denn es hängt davon ab, dass die zweite Klasse' details. Wenn Ihre Klasse, hängt am interface, das ist absolut OK, da diese Art der Abhängigkeit heißt nur, dass deine Klasse braucht etwas Abstrakt sind, dass Sie tun können, etwas bestimmtes und Sie nicht wirklich die Art und Weise Sie es tut.

    Da P in "DIP" steht für "Prinzip", ich sollte wohl definieren es so: Dependency-Inversion-Prinzip ist ein Prinzip, das verlangt, dass alle Ihre code-Entitäten hängt nur an details, die Sie wirklich müssen.

    Durch "details, die Sie wirklich brauchen," ich meine, die Schnittstellen für den einfachsten Fall. Ich benutzte auch das Wort "Personen" zu betonen, dass der DIP ist auch anwendbar auf Verfahren und alles, was sonst, nicht nur zu Klassen.

  2. Dependency Injection. Es ist nur anwendbar auf DI-fähigen Entitäten. DI-fähigen Entität ist eine Einheit, die offen ist für die Konfiguration seines Verhaltens, ohne dabei Ihre Interna. Es gibt 2 grundlegende Arten von Injektion (wenn man über Klassen):

    • Constructor Injection ist, wenn Sie übergeben Sie alle erforderlichen "abstract " details", um das Objekt direkt von der moment, es geht um konstruiert zu werden.
    • Setter-Injektion - ist, wenn Sie "klären" die erforderlichen Aspekte, nachdem das Objekt bereits erstellt wurde.

    So, die definition ist wohl wie folgt aus: Dependency Injection ist ein Prozess der übergabe der "abstrakten details" zu der Person, die wirklich braucht diese details.

    Durch "wirklich braucht, diese details" meine ich-Schnittstellen für den einfachsten Fall. Das Wort "Unternehmen" ist, wie immer, zu betonen, dass DI ist auch anwendbar auf Verfahren und was sonst noch.

  3. Inversion of Control. Es ist oft definiert als "Differenz zwischen Bibliotheken und frameworks", als "Programme zu schreiben, die so oder so hast du in der prozeduralen Programmierung" und so weiter. Dass das schwierigste für mich. Ich glaube, dass die Grundidee hier ist nur zu Beginn aller Maßnahmen. Entweder Sie tun etwas ", Wann immer Sie wollen" (Procedural), oder Sie "warten", bis jemand Sie fragt, IoC (Art und Weise).

    Meine Definition ist: IoC ist eine Eigenschaft, die Ihrem Programm den ausführungsablauf, wenn Sie nichts tun, bis Sie Sie bitten, es zu tun.

    Klingt es genau wie "Hollywood Prinzip", aber ich glaube, dass die "Hollywood-Prinzip" und IoC sind beide absolut die gleiche Idee.

Muss ich das verstehen?

Schreibe einen Kommentar