KDispatcher: bus de eventos ligero y conveniente para el uso diario

Hola queridos colegas, amantes de Kotlin.

En mi primer artículo quiero contarles sobre una biblioteca útil que escribí exclusivamente en Kotlin, y la apoyo y desarrollo activamente. Se llama - KDispatcher. Diseñado para enviar y suscribirse a notificaciones entre los componentes de su código. Puede usarlo en cualquier proyecto de Kotlin, ya sea Android, Frontend, Backend o KotlinNative.

Beneficios clave

  • Suscripción de eventos rápida y fácil
  • La prioridad de las llamadas a las funciones de escucha (devoluciones de llamada)
  • Usando funciones de extensión de Kotlin
  • Hilo de seguridad

Entonces, para usar esta biblioteca en su proyecto, necesita conectarla a través de Gradle:

implementation 'com.rasalexman.kdispatcher:kdispatcher:xyz' 

o Maven:

 <dependency> <groupId>com.rasalexman.kdispatcher</groupId> <artifactId>kdispatcher</artifactId> <version>xyz</version> <type>pom</type> </dependency> 

Después de eso, puede usar dos formas:

1) Llame al método del objeto:

 KDispatcher.subscribe(eventName, ::listenerFunction, priority) 

donde, eventName es el nombre de la cadena de su evento al que desea suscribirse; :: listenerFunction - una función que toma un solo parámetro de tipo Notificación y puede tener la forma

 (Notification<T>)->Unit 

que contiene el objeto de sus datos (datos: T) y el nombre del evento (eventName: String). El último parámetro opcional, prioridad: Int es una variable numérica para ordenar la llamada de sus funciones de devolución de llamada, ya que puede firmar varios oyentes para un evento a la vez. Para pasar un evento, debe llamar al método:

 KDispatcher.call(eventName:String, data:Any) 

También puede darse de baja de escuchar eventos cuando ya no los necesite, utilizando el método:

 KDispatcher.unsubscribe(eventName:String, ::listenerFunction) 

Todo es muy sencillo.

2) La segunda forma es implementar sus clases (la palabra ciertamente no es muy buena, pero espero que todos lo entiendan) desde la interfaz IKDispatcher y puede obtener toda la funcionalidad del marco de eventos, y aún más, debido a las funciones de extensión de Kotlin. A continuación quiero dar un pequeño ejemplo del uso de esta interfaz:

 class MainActivity : AppCompatActivity(), IKDispatcher { private val eventListenerOne = this::eventOneHandler //... override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) scopeOperation() } private fun scopeOperation() { //       subscribe(EVENT_CALL_ONE, 3, eventListenerOne) subscribe(EVENT_CALL_ONE, 1, ::eventListenerTwo) subscribe(EVENT_CALL_ONE, 2, MyClass::eventListenerFour) //   call(EVENT_CALL_ONE, "FIRST CALL FROM KDISPATCHER") /** *      lambda- */ val eventName = "LAMBDA_EVENT" subscribe<String>(eventName) { notification -> println("LAMBDA_EVENT HAS FIRED with event name ${notification.eventName} and data ${notification.data}") unsubscribe(notification.eventName) } call(eventName, "FIRST CALL CUSTOM LABDA EVENT") } fun eventOneHandler(notification:Notification<Any>) { println("eventOneHandler MY TEST IS COMING event = ${notification.eventName} AND data = ${notification.data}") } } 

Puede encontrar un ejemplo completo de uso en el enlace
KDispatcher en github

Gracias por leer hasta el final. Estaría muy contento de recibir comentarios y asistencia en el desarrollo del proyecto.

¡Disfruta codificando en el increíble lenguaje KOTLIN!

Source: https://habr.com/ru/post/es418707/


All Articles