Ziel - Aktion - Target–action

Der Begriff Ziel-Aktions- Design-Paradigma bezieht sich auf eine Art Softwarearchitektur , bei der ein Computerprogramm in Objekte unterteilt ist , die dynamisch Beziehungen herstellen, indem sie sich gegenseitig mitteilen, auf welches Objekt sie abzielen sollen und welche Aktion oder Nachricht bei Auftreten eines Ereignisses an dieses Ziel gesendet werden soll . Dies ist besonders nützlich, wenn Sie grafische Benutzeroberflächen implementieren , die von Natur aus ereignisgesteuert sind .

Vorteile

Der Ziel-Aktions-Ansatz für ereignisgesteuerte Systeme ermöglicht im Vergleich zu anderen statischeren Ansätzen, z. B. durch Unterklassen , eine weitaus größere Dynamik . Dies liegt daran, dass Unterklassen eine relativ starre Art des Programmierens sind: Ein Programmierer muss die interne Verbindungslogik eines Programms zur Entwurfszeit festlegen. Dies kann später nicht geändert werden, es sei denn, das Programm wird gestoppt, überarbeitet und neu erstellt. Andererseits kann die zielzielbasierte Programmierung diese zur Laufzeit vollständig ändern , so dass das Programm selbst neue Wechselbeziehungen und neuartiges Verhalten herstellen kann.

Ein Paradebeispiel für diesen Ansatz ist die OpenStep- API , deren grafische Benutzeroberfläche teilweise dank der dynamischen Objective-C- Sprache mithilfe des Zielaktionsparadigmas implementiert wurde. Betrachten Sie das folgende Beispiel in Objective-C:

[button setTarget: self];
[button setAction: @selector(doSomething)];

Nun , wenn die Taste durch die identifizierte Taste Variable gedrückt wird, wird das Laufzeitsystem versuchen , eine Nachricht senden namens doSomething auf das Objekt , in dem dieser Code aufgerufen wurde. Es ist auch sehr gut möglich, die zur Laufzeit zu sendende Nachricht zu bestimmen:

[button setTarget: self];
[button setAction: NSSelectorFromString([textField stringValue])];

Hier ist die Nachricht , die gesendet werden soll , wird durch Konsultation eines bestimmt Textfeld ‚s String - Wert (die Zeichenfolge , die der Benutzer in ein Textfeld eingegeben). Diese Zeichenfolge wird anschließend in eine Nachricht konvertiert (mithilfe der Funktion NSSelectorFromString ) und als Aktion an die Schaltfläche übergeben. Dies ist möglich, weil unter Objective-C Methoden durch einen Selektor dargestellt werden , eine einfache Zeichenfolge, die die aufzurufende Methode beschreibt. Wenn eine Nachricht gesendet wird, wird der Selektor an die ObjC-Laufzeit gesendet, mit einer Liste verfügbarer Methoden abgeglichen, und die Implementierung der Methode wird aufgerufen. Die Implementierung der Methode wird zur Laufzeit und nicht zur Kompilierungszeit nachgeschlagen.

Nachteile

Aufgrund der extremen Dynamik und Verhaltensfreiheit von Programmen, die mit dem Zielaktionsparadigma entwickelt wurden, kann es vorkommen, dass der Programmdesigner einen Teil der Verbindungslogik falsch implementiert, was zu manchmal schwer zu verfolgenden Fehlern führen kann. Dies ist auf die fehlende Steuerung der Kompilierungszeit durch den Compiler zurückzuführen, der die Verbindungen nicht sehen kann. Somit bleibt die Kontrolle der Verbindungskonsistenz vollständig dem Programmierer überlassen.

Das Ergebnis einer falsch verbundenen Zielaktionsbindung kann davon abhängen, wie das jeweilige System, in dem das Programm implementiert ist, dies berücksichtigt:

  • Es kann die Bedingung ignorieren und nichts ausführen (wie im obigen Schaltflächenbeispiel - wenn das Ziel einer Schaltfläche nicht auf ihre Aktionsnachricht reagiert, bewirkt das Drücken der Schaltfläche einfach nichts).
  • es kann einen solchen Zustand betrachten eine sein Fehler , in diesem Fall wird es höchstwahrscheinlich das Programm führen Absturz einer Laufzeit oder invoke Ausnahme

Siehe auch

Externe Links