contribucion ejemplo de eventbus

Iniciado por sapito169, 23 Diciembre 2020, 01:09 AM

0 Miembros y 1 Visitante están viendo este tema.

sapito169

pequeña contribución un ejemplo de un bus de eventos
para que puedas desacoplar tus aplicación  ::)
para que puedas comunicar entre varios formularios de tu aplicacion de escritorio javafx swing o lo que sea ::)

porfavor respondamen no me castiges con el latigo de tu indiferencia
no me rechazes como ella


ejemplo de uso


public class Main {
public static void main(String args[]) {
EventBus eventBus = new EventBus();
eventBus.chanel("/sistema/session/parametros").on(t -> System.out.println(t));
eventBus.chanel("/sistema/session/parametros").fire(new RegistraParametro("mi parametrito"));


}
}




public class RegistraParametro {

private String string;

public RegistraParametro(String string) {
this.string = string;

}

@Override
public String toString() {
return "RegistraParametro [string=" + string + "]";
}

}


el resto de clases son cortitas


import java.util.function.Function;

public interface Callbak { void apply(Object obj); }



import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.function.Consumer;
import java.util.function.Function;

public class Chanel {

private List<Callbak> events = new ArrayList<>();

public void fire(Object event) {
events.forEach(p -> p.apply(event));
}

public void on(Callbak event) {
events.add(event);
}

}




import java.util.HashMap;

public class EventBus {

private HashMap<String, Chanel> chanels = new HashMap<>();

public Chanel chanel(String string) {
return chanels.computeIfAbsent(string, p -> new Chanel());

}

}


TickTack

Hola sapito169,

Cita de: sapito169 en 23 Diciembre 2020, 01:09 AM
porfavor respondamen no me castiges con el latigo de tu indiferencia
no me rechazes como ella

¿eh que?


Saludos
Citar
"Ninguna mentira puede inventarse lo suficientemente patán: el pueblo hispanohablante la cree. Por una consigna que se les dio, persiguieron a sus compatriotas con mayor encarnizamiento que a sus verdaderos enemigos."

sapito169

se siente raro quedar hablando solo

rub'n

#3
Cita de: sapito169 en 18 Enero 2021, 02:52 AM
se siente raro quedar hablando solo

Y acaso necesitas obligatoriamente que te respondan? Sapito tienes mas de 10 años en el foro, dejale eso a alguien con poco tiempo aqui  :xD , a mi cada vez que dices eso me da mucha risa.

Simple y llanamente sigue colaborando y ya, que tan dificil es?

ajjajaaa


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

TickTack

Hola sapito169,

Cita de: sapito169 en 18 Enero 2021, 02:52 AM
se siente raro quedar hablando solo

¿y tu irritante metáfora se siente menos rara que un "estaría encantado de recibir sugerencias, críticas o adiciones"?


Saludos
Citar
"Ninguna mentira puede inventarse lo suficientemente patán: el pueblo hispanohablante la cree. Por una consigna que se les dio, persiguieron a sus compatriotas con mayor encarnizamiento que a sus verdaderos enemigos."

TickTack

Hola de nuevo, sapito169,

Channel con doble n y Callback con c ;).

Por lo demás: Channel tipificados estarían bien, como ejercicio podrías incluir Generics y verificaciones de tipo en tiempo de ejecución :). Y, por supuesto, un procesamiento asincrónico de los Events, que también son buenos para probarlos :).


Saludos
Citar
"Ninguna mentira puede inventarse lo suficientemente patán: el pueblo hispanohablante la cree. Por una consigna que se les dio, persiguieron a sus compatriotas con mayor encarnizamiento que a sus verdaderos enemigos."

sapito169

me van a tener que seguir soportando