Bewerbung als helfer Muster

Sie können alle Ihre Helfer in ApplicationHelper schreiben. Eine Dienstprogrammklasse ist ein Sonderfall einer Hilfsklasse, in der die Methoden alle statisch sind. Im Allgemeinen müssen Hilfsklassen nicht alle statischen Methoden haben, aber möglicherweise über Instanzvariablen verfügen. Möglicherweise sind auch mehrere Instanzen der Hilfsklasse vorhanden. Einer dieser eingebauten Helfer ist time_ago_in_words. Weitere Helfer finden Sie in der Ruby on Rails-Dokumentation. Auf diese Weise können Sie Helfer von Ihrem Controller verwenden. Aber denken Sie zweimal darüber nach, bevor Sie dies tun, weil es ein Design-Problem sein kann. Wenn Sie Helfer für JSP-Seiten entwickeln, haben Sie zwei Möglichkeiten.

Sie können entweder JavaBeans oder benutzerdefinierte Tags verwenden. Welche Sie wählen, hängt wirklich von der Art der Daten ab, die Sie anpassen möchten. In der Regel verwenden Sie JavaBeans, um einzelne Datenstücke zu extrahieren, und benutzerdefinierte Tags eignen sich besser für die Arbeit mit Datensätzen. Es ist jedoch wichtig, darauf hinzuweisen, dass Sie beide Datentypen verwenden können. Keine wissenschaftliche Definition, aber meine allgemeine Meinung ist, dass eine Dienstklasse einen gewissen Kontext innerhalb der Anwendung hat, während Helfer allgemeiner sind und sich nicht darum kümmern, welche App sie unterstützen. Das Muster “Ansichtshilfsmuster” gibt an, dass Sie Hilfsprogramme verwenden, um Modelldaten an die Präsentationsebene einer Anwendung anzupassen. In der Regel enthält die Präsentationsebene mehrere JSP-Seiten (JavaServer Pages). Diese Seiten bestehen aus HTML und Bildern, die verwendet werden, um dem Benutzer Inhalte zu präsentieren. Ein Problem tritt jedoch auf, wenn diese Seiten dynamische Inhalte anzeigen müssen, die im Modell gespeichert sind. Sie möchten wahrscheinlich vermeiden, Java-Code in diese Seiten einzubetten, um Modelldaten anzuzeigen, daher müssen Sie einige Helfer einsetzen, um die Arbeit für Sie zu erledigen. Es ist möglich, wenn auch nicht sehr häufig, Hilfsmethoden aus Controller-Aktionen zu verwenden.

Wie Sie sich vorstellen können, erleichtern Helfer Seitendesignern die Entwicklung der Präsentationsebene erheblich, indem Java-Code durch benutzerfreundliche Hilfsprogramme ersetzt wird. Natürlich können Entwickler dies nur erreichen, wenn sie einen Katalog der Helfer veröffentlichen und beschreiben, wie sie verwendet werden. Wenn die Seitendesigner jedoch ihre Seiten entwickeln, bevor der Anwendungsdesigner bereit ist, ihnen ein Modell für die Hilfsprogramme zu geben, mit denen sie arbeiten können, gibt es ein Problem. Eine nützliche Methode, um dieses Problem zu beheben, besteht darin, in den Helfer eine Reihe von Dummy-Daten zu codieren, die angezeigt werden sollen, wenn kein Modell vorhanden ist. Ein alternativer Ansatz wäre, ein Dummy-Modell bereitzustellen, mit dem sie funktionieren können. So oder so sollte der Seitendesigner nicht aufgehalten werden, während er auf die Entwickler wartet. Ich bevorzuge es, benutzerdefinierte Tags für die meisten Ansichtshilfen zu verwenden. Sie geben dem Entwickler mehr Zugriff auf den Servletkontext und bieten einige Leistungsvorteile, wenn sie innerhalb des Anwendungsservers gepoolt werden.

Ein weiterer Grund, warum ich benutzerdefinierte Tags verwenden möchte, ist, dass sie für einen Nicht-Java-Seitendesigner intuitiv sind. Ihr Format ähnelt Standard-HTML-Tags, die inzwischen für die meisten von uns zur zweiten Natur geworden sind. Schließlich können Sie benutzerdefinierte Tags – sobald sie entwickelt und gedebuggt wurden – auf allen JSP-Seiten in Ihrer Anwendung verwenden. Wenn die Tags so konzipiert sind, dass sie generisch genug sind, können Sie sie als Tag-Bibliothek verpacken, die anwendungsübergreifend wiederverwendet werden kann. Dienste sind nicht einfach eng an DAOs gekoppelt, es ist ein breiteres Begriffs-/Nutzungsmuster als Persistenz In neueren Versionen können Sie Hilfsprogramme in Ihrem Controller mit dem Helpers-Objekt (Plural) verwenden. Ich habe gerade folgendes verwendet und es hat funktioniert: helper.time_ago_in_words(Time.now) Ich bin in Rails 6, wenn das einen Unterschied macht. A View delegiert seine Verarbeitungsaufgaben an seine Hilfsklassen, die als JavaBean, benutzerdefinierte Tags oder Tag-Dateien implementiert sind. Hilfsprogramme dienen als Adapter zwischen der Ansicht und dem Modell und führen eine Verarbeitung im Zusammenhang mit der Formatierungslogik durch, z.

B. das Generieren einer HTML-Tabelle. Eine Dienstklasse/-schnittstelle bietet eine Möglichkeit für einen Client, mit einigen Funktionen in der Anwendung zu interagieren. Dies ist in der Regel öffentlich, mit einer gewissen geschäftlichen Bedeutung.

About the Author