Frage

Ich habe ein trübes Verständnis von GIN, sondern habe es zum Injizieren Moderator arbeiten, etc.

Ich versuche, eine selbstgemachte „User“ Klasse in alle meine Moderatoren zu injizieren, um angemeldete in der zur Zeit zu erhalten Benutzer.

Ich habe @Inject an den Konstruktor auf meiner Benutzerklasse hinzugefügt und Benutzer zu meinem GIN Modul hinzugefügt ... aber abgesehen davon, bin ich total verloren. Muss ich es an meine app Moderator binden (versucht, aber ich erhalte eine Fehlermeldung, da Benutzer nicht mein AppPresenter erstreckt)? Als Singleton? Ist dies auch der richtige Weg, um diese Daten zu erhalten, läuft um?

Ich hasse das hier schreiben (nicht kostenlos Hausaufgaben suchen), aber ich kann nicht ein anständiges Tutorial / example auf diesen irgendwoanders.

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Ich sehe zwei Möglichkeiten:

  • inject mit der Quelle ist, um ein @Provides Verfahren oder einer Provider . Allerdings ist das Problem, wie die zur Zeit in Benutzern auf diese Methoden angemeldet passieren, da globaler Zustand ein No-No ist. Eine mögliche Lösung wäre es über den Fall Bus, aber an dieser Stelle vorbei scheint es, dass es irgendwie den ganzen Sinn von DI besiegt (Einspritzen der aktuell angemeldeten Benutzer ist IMHO nicht die Rolle von DI).
  • übergeben Sie den Benutzer über den Event-Bus um. Erstellen Sie ein benutzerdefiniertes Ereignis, das ausgelöst wird, wenn sich der Benutzer anmeldet / Änderungen und einige Moderatoren für dieses Ereignis zu hören (immerhin nicht alle Moderatoren den aktuellen Benutzer wissen müssen).

Ich ziehe und verwenden Sie den zweiten Ansatz - während DI genial, es in der Art und Weise unter Verwendung von Ihnen beschrieben scheint irgendwie hackish zu mir. Ich empfehle die Guice Dokumentation - Gin schön zur Arbeit mit GWT, wickelte Guice ist im Grunde so der Kern gleich ist. Für einige andere Hinweise, wie effektiv DI verwenden und, im Allgemeinen, prüfbare Code schreiben, empfehle ich Misko Hevery Blog und die Führungs prüfbar Code zu schreiben er dort setzen (intern von Google verwendet ).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top