Nachdem ich DSL eine Weile sorgfältig studiert habe, habe ich einige interessante Dinge entdeckt. Eines der am häufigsten verwendeten Dinge in JavaScript sind wahrscheinlich verkettete Aufrufe (Method Chaining). Interessanterweise wies Martin Flower darauf hin:
Mir ist auch ein weit verbreitetes Missverständnis aufgefallen: Viele Leute scheinen Fluent Interfaces mit Method Chaining gleichzusetzen. Verkettung ist sicherlich eine gängige Technik für Fluent Interfaces, aber echte Fluency ist viel mehr.
Viele Menschen setzen verkettete Anrufe mit flüssigen Schnittstellen gleich. Kettenaufrufe sind jedoch eine gängige Methode für fließende Schnittstellen, und die echte fließende Schnittstelle ist mehr als das.
DSL-glatte Schnittstelle
Die ursprüngliche Absicht der Fluent-Schnittstelle besteht darin, eine lesbare API zu erstellen. Schließlich ist der Code so geschrieben, dass er von Menschen gelesen werden kann.
Lassen Sie uns in ähnlicher Weise einen kurzen Blick darauf werfen, wie wir zuvor das DOM durch Methodenkaskadierung manipuliert haben
console.log('1');
gib dies zurück;
};
This.result = function(){
console.log('2');
gib dies zurück;
};
Geben Sie dies zurück;
});
var func = new Func();
func.add().result();
Dies sieht jedoch wie ein Ausdrucksgenerator aus.
DSL-Ausdrucksgenerator
Das Ausdrucksgeneratorobjekt stellt eine Reihe kohärenter Schnittstellen bereit und wandelt dann die kohärenten Schnittstellenaufrufe in Aufrufe an die zugrunde liegende Befehlsabfrage-API um.
Eine solche API ist in einigen APIs zu Datenbanken zu sehen:
Ein Problem bei verketteten Aufrufen ist das Ende. Im obigen Code haben wir das Ende nicht, was sehr verwirrend ist. . Das Hinzufügen einer Abfrage und eines Endes scheint ein gutes Ergebnis zu sein.
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn