Vodič za Guava's EventBus

1. Pregled

Guava knjižnica nudi EventBus što omogućuje objavljivanje-pretplatu komunikacije između komponenata. U ovom uputstvu pogledat ćemo kako se koriste neke značajke EventBus.

2. Postavljanje

Za početak dodamo ovisnost o knjižnici Google Guava u pom.xml:

 com.google.guava guava 29,0-jre 
Najnoviju verziju možete pronaći ovdje.

3. Korištenje EventBus

Krenimo od jednostavnog primjera.

3.1. Postaviti

Započinjemo s gledanjem EventBus objekt. Može registrirati slušatelje i objavljivati ​​događaje. Korištenje je jednostavno kao instanciranje klase:

EventBus eventBus = novi EventBus ();

Guava knjižnica daje vam slobodu korištenja EventBus na bilo koji način koji najbolje odgovara vašim razvojnim potrebama.

3.2. Stvaranje slušatelja

Stvaramo klasu slušatelja koja ima metode rukovatelja za primanje određenih događaja. Metode rukovatelja bilježimo s @ Pretplatite se. Metoda prihvaća kao argument objekt iste vrste kao i događaj koji se objavljuje:
javna klasa EventListener {private static int eventsHandled; @ Pretplatite se na javni void stringEvent (događaj niza) {eventsHandled ++; }}

3.3. Registriranje slušatelja

Možemo se pretplatiti na događaj registracijom našeg EventListener razred na EventBus:
Slušač EventListener = novi EventListener (); eventBus.register (slušatelj);

3.4. Odjava slušatelja

Ako iz bilo kojeg razloga želimo poništiti registraciju iz razreda EventBus, što se također može lako učiniti:

eventBus.unregister (slušatelj);

3.5. Knjiženje događaja

Događaje možemo objavljivati ​​i putem EventBus:
@Test javna praznina givenStringEvent_whenEventHandled_thenSuccess () {eventBus.post ("String Event"); assertEquals (1, listener.getEventsHandled ()); }

3.6. Knjiženje prilagođenih događaja

Također možemo odrediti prilagođenu klasu događaja i objaviti taj događaj. Počinjemo izradom prilagođenog događaja:
javna klasa CustomEvent {private String action; // standardni getteri / postavljači i konstruktori}

Dodavanje metode rukovatelja u EventListener razred za taj događaj:

@ Pretplatite se na javnu prazninu someCustomEvent (CustomEvent customEvent) {eventsHandled ++; }

Sada možemo objaviti naš prilagođeni događaj:

@Test javna praznina givenCustomEvent_whenEventHandled_thenSuccess () {CustomEvent customEvent = new CustomEvent ("Prilagođeni događaj"); eventBus.post (customEvent); assertEquals (1, listener.getEventsHandled ()); }

3.7. Rukovanje Otkazana pretplata Događaj

Osigurani smo s DeadEvent klasa koja nam omogućuje obradu svih događaja koji nemaju slušatelje. Možemo dodati metodu za rukovanje DeadEvent razred:

@ Pretplatite se na javnu prazninu handleDeadEvent (DeadEvent deadEvent) {eventsHandled ++; }

4. Zaključak

U ovom uputstvu koristili smo jednostavan primjer kao vodič za upotrebu Guave EventBus.

Kompletni izvorni kod i sve isječke koda za ovaj članak možete pronaći na GitHubu.