2009-05-31 11 views
5

Mój obecny proces dla własnych widżetów jest następujący:Zmniejszenie GWT zwyczaj widget gadatliwość

  1. Tworzenie moją klasę widget - rozszerzenie Composite;
  2. Utwórz interfejs detektora dla tego widgetu;
  3. Tworzenie interfejsu kolekcji słuchaczy - prywatna wewnętrzna klasa do widgetu;
  4. Tworzenie metod add/removeListener na widżecie;
  5. Wewnątrz widgetu uruchom zdarzenia na słuchających.

Moi słuchacze odpalają drobnoziarniste wydarzenia, takie jak onEntityDisplayRequested(Entity entity), więc nie mogę korzystać z zasobów słuchaczy.

Podczas gdy uzyskuje się niskie sprzężenie dla widgetu i pozwala na ponowne wykorzystanie, jest dość szczegółowe. Czy istnieje lepszy sposób obsługi projektowania niestandardowych widżetów?

Odpowiedz

3

Nie potrzebujesz osobnego interfejsu dla każdego nowego widżetu. Na przykład. ClickListener jest używany przez wiele różnych klas widżetów. Oczywiście, niektóre niestandardowe widgety będą wymagać nowego typu słuchacza, ale nie powinno to być automatyczne.

+0

Dzięki za odpowiedź. Używam tych detektorów do wywoływania zdarzeń niestandardowych, np. onEntityDisplayRequested (Entity e), więc nie mogę używać słuchaczy zasobów. –

+0

Najlepsza - i tylko - odpowiedź do tej pory. Zwycięzca! –

2

Myślę, że Java napotkała ten sam problem jakiś czas temu, a rozwiązaniem było posiadanie zdarzeń PropertyChange. Są dostarczane wraz z - PropertyEvent, który zawiera źródło, nazwę właściwości i stare + nowe wartości - PropertyChangeListener - właściwość PropertyChangeSupport, na którą można delegować uruchamianie zdarzeń, a także rejestrowanie i wyrejestrowywanie detektorów.

Utrata pewnej specyficzności (wydarzenie jest dopasowywane przez ich nazwę jako ciąg znaków), ale nadal można uruchamiać drobnoziarniste zdarzenia i mieć pewne zewnętrzne wsparcie klasy.

Nie korzystałem z tego obszernie w GWT, więc nie mogę komentować aspektów wydajności.