© saicle/Shutterstock.com
Design Patterns sind mehr als OOP-Emulation

Advanced JavaScript Trickery


Wer über Design Patterns für JavaScript schreibt, beginnt normalerweise mit einem Elaborat über die Besonderheiten von prototyporientierten Sprachen. Dies ist mit Sicherheit nicht unrichtig – wer von .NET in Richtung JavaScript übersiedelt, hat mit dem System seine Schwierigkeiten.

Zur Umgehung dieses Problems hat sich im Laufe der Jahre eine Gruppe von Patterns herauskristallisiert, die die Emulation von Objekten in JavaScript erlauben. Aufgrund ihrer enormen Wichtigkeit werden sie immer wieder in Fachmagazinen behandelt. Im folgenden Artikel setzen wir dieses Wissen als gegeben voraus, und wenden uns stattdessen einer Gruppe von anderen, nicht weniger interessanten Themen zu.

Zustandsautomaten

Wer einmal mit PhoneGap gearbeitet hat, kennt die Problematik der asynchronen Programmierung mit Sicherheit. Beim Abarbeiten von einer Gruppe von asynchronen Aufrufen ist für jede Stufe der Verarbeitung eine eigene Erfolgsmethode notwendig, die den nächsten Schritt einleitet.

In meinem Lehrbuch zum Thema PhoneGap findet sich das folgende Beispiel. Seine genaue Funktion ist an dieser Stelle nicht relevant – wichtig ist nur, dass das erfolgreiche Abarbeiten von getFile zu einem Aufruf von SuccessSv1 führt. Danach wird createWriter aufgerufen, ein Erfolg an dieser Stelle wird in successSv2 angezeigt (Listing 1).

Listing 1

function processStore() { myFileSystem.root.getFile("newFile.txt", {create: true, exclusive: false}, successSv1, fail); } function successSv1(_newFileEntry) { _newFileEntry.createWriter(successSv2, fail); } function successSv2(_writer) { _writer.onwrite=function(_evt) { document.getElementById('TxtStatus').value="Write Success"; } . . . _writer.write(document.getElementById('TxtResultA').value); }

Dieses Problem lässt sich durch die Verwendung eines Zustandsautomaten umgehen. Die ausführliche Behandlung dieses (faszinierenden) Themas würde das ganze Heft füllen; wir begnügen uns an dieser Stelle deshalb mit einer Kurzfassung.

Ein Zustandsautomat ist ein Programm, dessen Reaktion auf ein eingehendes Ereignis nur (oder primär) vom im System gespeicherten Zustand abhängt. Eingehende Ereignisse führen unter Umständen zu Zustandsänderungen. In unserem Fall wäre der Erfolgs-Callback ein dankbarer Kandidat für die Realisierung per Zustandsautomat. Je nach Wert der Zustandsvariable folgt auf den eingehenden Erfolgsimpuls ein anderes Ereignis.

PhoneGap-erfahrene Entwickler schreien an dieser Stelle auf, da die zurückgegebenen Datentypen je nach Art des Erf...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang