Haken ( englisch für Haken , Auch Einschubmethode genannt) bezeichnen in der Programmierung Einer Schnittstelle , mit dem Fremd – Anwendungen – Code in Einem am besten kann anwendung integriert Werden Kann, um this zu erweitern, Derens Ablauf zu Verändern ! Oder um Bestimmt EREIGNIS abzufangen. Dies Kann Entweder im Quelltext geschehen , wo entsprechend modifiziert Wird, über Konfigurationsdateien , stirbt der Ablauf Eines Ferte Programmändern, oder den Aufruf von Funktionen in irindeiner Form ausführen. In der Regel sind die Standardwerte der gleichen Methoden garantiert. [1]
Haken können vom Betriebssystem zum Abfangen von Nachrichten zur Verfügung gestellt werden. Schweissen schweißt sich z. B. systemweite Implementieren von Hotkeys. So spielt man die Tastatur-Nachrichten unabhängig vom Programm, welche aktuell von Focus Hut, empfangen werden.
Implementierung
Sie sind willkommen, Ihnen zu helfen.
Wenn Der Quelltext des zu erweiternden Programm vorliegt, lassen sich immer prinzipiell Erweiterung Vornehm. Soferne , wo der Code jedoch nicht genau Bekannt ist, bist of this aufwendig, Weil this Erweiterung jeden Umfangreiche Veränderungen Necessesary, sterben obendrein unerwünscht Nebenwirkungen HABEN can und zudem mit Version neu Jeden Neues eingepflegt Werden Muß.
Daher definieren bestimmte Programm bestimmte Stellen, die explizit dafür vorgesehen sind, von andre erweitert zu werden. Dies Kann Characterized geschehen that Eine Funktion aufgerufen Wird, sterben im Programm Ursprüngliche leer implementiert ist, auch bewirkt nichts. Dies kann durch den Fortschritt der Funktion erklärt werden. Die ursprüngliche Lernfunktion wird von Hook gebildet.
In den Objektorientierungen Programmierung wird durch Vererbung oder durch Delegation :
- Im Falle der Vererbung Sind Die Haken Leere Methoden , sterben in Unter Klassen ausimplementiert Werden Können. Ein Beispiel ist das Entwurfsmuster der Schablonenmethode ; hier wurden die Methoden interessanter als die Hooks, und die Algorithmen mit festen Ablaufrahmen spezialisieren können.
- Im Fall der Delegation Wurde ein in dem Formular Eines Haken Objekt als ATTRIBUT ein den Aufrufer übergeben. Of this Objekt Muss Eine Bestimmt Schnittstelle implementieren. Ein beispiel Stellt die Strategie-Entwurfsmuster dar. If zu Erwarten ist, Dass der Haken von mehreren Unterschiedlich Dienstleistern genutzt Werden Wird, Kann der Aufrufer die Haken in Formular Einer Liste anstelle Eines einfach Attribut implementieren, sodass Mehrere Implementierungen Jan Hooks der Reihe nach aufgerufen Werden Können. Of this Geschehen zum beispiel im Fall Einen Hörer, auf der Benutzer Interaktion abfangen. Wenn die Lista nur so kurz abläuft, wird der Haken ein bestimmtes Ergebnis zurückliefern, hat man eine Zuständigkeitskette .
Betriebssystem-Hooks unter Windows – Wird in Einem Eigenen DLL implementiert, Welche vom Betriebssystem ohne EINEN Programmkontext aufgerufen Wird. SOMIT Muss ein Programm, Welches EINEN Hook (z. B. zur Benachrichtigung über ein Ereignis) implementiert, seine ergebnisse über anderen Mechanismus von ihnen in dem DLL – Code enthaltenen erfahren (z. B. Profilierung mittels Interprozesskommunikation ).
Konfiguration
Es ist die Frage, die ein großartiges Programm über die Programmstile hat, die diese vorgefertigten Hooks verwenden.
Im einfachsten Fall wird der Programmcode sofort geändert, um Zugriff auf die Hooks zu erlangen.
Oder es wird Programmcode über Konfiguration hinzugefügt. Dies Kann in der prozeduralen Programmierung über Funktionszeiger geschehen, INDEMAR Eine aufzurufende Unterroutine mit ihrer Startadresse eingetragen Wird. In der objektorientierten Programmierung Wird dagegen Eine Klasse über Empfehlung : Ihren Namen Alternator misch geladen; Diese Klasse implementiert als Unterklasse oder als Delegationsobjekt den vom Vom-Haken aufgerufenen Code. Wird Dependency Injection verdorben, so schweisst sich hierüber gleichfalls einfach Haken an.
Eine dritte möglichkeit Besteht Darin, ein Objekt oder Eine Funktion, Welche vom Haken aufgerufen Werden soll, über Eine Zugriffsfunktion zu setzen. Dies Wird Dann gemacht, Wenn Der Haken von Einer ProgrammbibliothekBereitgestellt Wird, das vom Selb Programmteil used Wird, Welches Auch sterben Hooks Nutzen Wird. Genutzt Werden die beispielsweise beim Zuhörer für Benutzerinteraktionen, Welcher oben BEREITS genannt Werden.
Siehe auch
- Rückruffunktion
Einzelstunden
- Hochspringen↑ Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Entwurfsmuster . Addison Wesley, München 2011, ISBN 978-3-8273-3043-7 , S. 370 ( War dies einer der gleichen?) Einseitige Methoden, die standardmäßig gewonnen wurden, wurden von Unterklassen bei Bedarf gewonnen. gar nichts. „- deutsch: Design Patterns . von Dirk Riehle).