Ein Kollege hat mich in das Publish / Subscribe-Muster (in JS / jQuery) eingeführt, aber es fällt mir schwer, herauszufinden, warum man dieses Muster gegenüber "normalem" JavaScript / jQuery verwenden würde.
Zum Beispiel hatte ich vorher den folgenden Code ...
$container.on('click', '.remove_order', function(event) {
event.preventDefault();
var orders = $(this).parents('form:first').find('div.order');
if (orders.length > 2) {
orders.last().remove();
}
});
Und ich konnte das Verdienst sehen, dies stattdessen zu tun, zum Beispiel ...
removeOrder = function(orders) {
if (orders.length > 2) {
orders.last().remove();
}
}
$container.on('click', '.remove_order', function(event) {
event.preventDefault();
removeOrder($(this).parents('form:first').find('div.order'));
});
Weil es die Möglichkeit einführt, die removeOrder
Funktionalität für verschiedene Ereignisse usw. wiederzuverwenden .
Aber warum sollten Sie sich entscheiden, das Publish / Subscribe-Muster zu implementieren und die folgenden Längen zu wählen, wenn es dasselbe tut? (Zu Ihrer Information, ich habe jQuery winzige Kneipe / Sub verwendet )
removeOrder = function(e, orders) {
if (orders.length > 2) {
orders.last().remove();
}
}
$.subscribe('iquery/action/remove-order', removeOrder);
$container.on('click', '.remove_order', function(event) {
event.preventDefault();
$.publish('iquery/action/remove-order', $(this).parents('form:first').find('div.order'));
});
Ich habe sicher über das Muster gelesen, kann mir aber nicht vorstellen, warum dies jemals notwendig sein würde. Die Tutorials, in denen erklärt wird, wie dieses Muster implementiert wird, enthalten nur ebenso grundlegende Beispiele wie meine eigenen.
Ich stelle mir vor, dass sich die Nützlichkeit des Pubs / U-Bootes in einer komplexeren Anwendung bemerkbar machen würde, aber ich kann mir keine vorstellen. Ich befürchte, dass ich den Punkt völlig verfehle; aber ich würde gerne wissen, ob es einen gibt!
Könnten Sie erklären , kurz und bündig , warum und in welchen Situationen dieses Muster von Vorteil ist? Lohnt es sich, das Pub / Sub-Muster für Code-Schnipsel wie meine obigen Beispiele zu verwenden?