Reflexionsarbeit Muster

Und schließlich, das umfassendste Beispiel ist Spring, die Reflexion verwendet, um seine Bohnen zu schaffen, und für seine starke Verwendung von Proxys Es wird von vielen Frameworks und Anwendung unter dem Holz verwendet, um Dienste zu rufen, ohne den Code tatsächlich zu kennen. Dieser Code erzeugt die gleiche Ausgabe wie im vorherigen Beispiel. PHP ersetzt einfach die Variable durch die Zeichenfolge, die es darstellt, und ruft die Methode auf. Es funktioniert sogar, wenn Sie Objekte mithilfe von Variablen für Klassennamen erstellen möchten. Reflexion wird im Allgemeinen als die Fähigkeit eines Programms definiert, sich selbst zu überprüfen und seine Logik zur Ausführungszeit zu ändern. In weniger technischer Hinsicht fordert Reflexion ein Objekt auf, Ihnen über seine Eigenschaften und Methoden zu berichten und diese Member (auch private) zu ändern. In dieser Lektion untersuchen wir, wie dies erreicht wird und wann es sich als nützlich erweisen könnte. Persönlich habe ich Reflektion nur in wenigen Fällen verwendet, am häufigsten, wenn Module von Drittanbietern verwendet werden, denen die Dokumentation fehlt. Ich befinde mich häufig mit Code ähnlich dem letzten Beispiel. Es ist einfach, die richtige Methode aufzurufen, wenn Ihr MVC mit einer Variablen antwortet, die “add” oder “remove”-Werte enthält. Unsere Reflektionsklasse verfügt über eine Name-Eigenschaft, die auf den ursprünglichen Typ der $editor-Variablen festgelegt ist: Editor, aber das sind nicht viele Informationen.

Was ist mit den Methoden des Editors? Das Schöne an reflexion auf diese Weise ist, dass es keine Änderung der Art erfordert, die wir reflektieren. Wir müssen nicht eine Reihe von Eigenschaften speichern, sich an ein bestimmtes Protokoll anpassen oder die Arbeit mit unserem Code erschweren. Während oben haben wir uns entschieden, unsere Reflexion mit Erweiterungen auf dem Ziel selbst zu implementieren, das ist definitiv keine Anforderung. Zum Beispiel hätten wir unseren Abmeldecode genauso einfach als eine völlig separate Funktion schreiben können: Da Reflektion Code erlaubt, Operationen auszuführen, die in nicht reflektierendem Code unzulässig wären, wie z. B. der Zugriff auf private Felder und Methoden, kann die Verwendung von Reflektion zu unerwarteten Nebenwirkungen führen, die Code dysfunktional machen und die Portabilität zerstören können. Reflektierender Code bricht Abstraktionen und kann daher das Verhalten mit Upgrades der Plattform ändern. Die Hauptklasse für Reflektion ist die System.Type-Klasse, die eine abstrakte Klasse ist, die einen Typ im Common Type System (CTS) darstellt. Wenn Sie diese Klasse verwenden, können Sie die in einem Modul und Namespace verwendeten Typen finden und auch bestimmen, ob ein gegebener Typ ein Verweis- oder Werttyp ist.

Products