Przewodnik po EventBus Guawy

1. Przegląd

Biblioteka Guava zapewnia EventBus, który umożliwia komunikację między komponentami poprzez publikację i subskrypcję. W tym samouczku przyjrzymy się, jak korzystać z niektórych funkcji EventBus .

2. Konfiguracja

Na początek dodajemy zależność biblioteki Google Guava w pom.xml:

 com.google.guava guava 29.0-jre 
Najnowszą wersję można znaleźć tutaj.

3. Korzystanie z EventBus

Zacznijmy od prostego przykładu.

3.1. Ustawiać

Zaczynamy od przyjrzenia się obiektowi EventBus . Może rejestrować słuchaczy i publikować zdarzenia. Używanie go jest tak proste, jak utworzenie instancji klasy:

EventBus eventBus = new EventBus();

Biblioteka Guava zapewnia swobodę korzystania z EventBus w dowolny sposób, który najlepiej odpowiada Twoim potrzebom programistycznym.

3.2. Tworzenie słuchaczy

Tworzymy klasę detektora, która ma metody obsługi do odbierania określonych zdarzeń. Dodajemy adnotacje do metod obsługi za pomocą @Subscribe . Metoda przyjmuje jako argument obiekt tego samego typu co wysyłane zdarzenie:
public class EventListener { private static int eventsHandled; @Subscribe public void stringEvent(String event) { eventsHandled++; } }

3.3. Rejestrowanie słuchaczy

Możemy zasubskrybować wydarzenie, rejestrując naszą klasę EventListener w EventBus :
EventListener listener = new EventListener(); eventBus.register(listener);

3.4. Wyrejestrowywanie słuchaczy

Jeśli z jakiegoś powodu chcemy wyrejestrować klasę z EventBus , można to również łatwo zrobić:

eventBus.unregister(listener);

3.5. Publikowanie wydarzeń

Możemy również publikować wydarzenia z EventBus :
@Test public void givenStringEvent_whenEventHandled_thenSuccess() { eventBus.post("String Event"); assertEquals(1, listener.getEventsHandled()); }

3.6. Publikowanie wydarzeń niestandardowych

Możemy również określić niestandardową klasę zdarzenia i opublikować to wydarzenie. Zaczynamy od stworzenia wydarzenia niestandardowego:
public class CustomEvent { private String action; // standard getters/setters and constructors }

Dodawanie metody obsługi w klasie EventListener dla tego zdarzenia:

@Subscribe public void someCustomEvent(CustomEvent customEvent) { eventsHandled++; }

Możemy teraz opublikować nasze niestandardowe wydarzenie:

@Test public void givenCustomEvent_whenEventHandled_thenSuccess() { CustomEvent customEvent = new CustomEvent("Custom Event"); eventBus.post(customEvent); assertEquals(1, listener.getEventsHandled()); }

3.7. Obsługa wydarzenia bez subskrypcji

Jesteśmy zaopatrzony DeadEvent klasy, która pozwala nam obsługiwać żadnych wydarzeń, które nie mają słuchaczy. Możemy dodać metodę do obsługi klasy DeadEvent :

@Subscribe public void handleDeadEvent(DeadEvent deadEvent) { eventsHandled++; }

4. Wniosek

W tym samouczku użyliśmy prostego przykładu jako przewodnika, jak korzystać z Guava EventBus .

Możesz znaleźć pełny kod źródłowy i wszystkie fragmenty kodu do tego artykułu na GitHub.