Здравствуйте, уважаемые коллеги, любители Kotlin
В своей первой статье я хочу рассказать вам об одной полезной библиотеке, которую я написал, исключительно на Kotlin, и активно поддерживаю и развиваю. Называется она, — KDispatcher. Предназначена для рассылки и подписки на уведомления между вашими компонентами кода. Вы можете использовать его в любом kotlin-проекте, будь то Android, Frontend, Backend или KotlinNative.
Основные преимущества:
Итак, чтобы использовать эту библиотеку у себя в проекте, вам необходимо подключить ее через Gradle:
или Maven:
После этого, вы можете воспользоваться двумя способами:
1) Вызвать метод объекта:
где, eventName — строковое название вашего события, на которое вы хотите подписаться; ::listenerFunction — функция, которая принимает один параметр типа Notification и может быть вида
содержащий в себе объект ваших данных (data:T) и название события(eventName:String). Последний, не обязательный параметр, priority:Int — числовая переменная, для сортировки вызова ваших коллбэков (callback functions), так как вы можете подписать на одно событие сразу несколько слушателей. Чтобы передать событие вам необходимо вызвать метод:
Так же вы можете отписываться от прослушивания событий, когда они вам больше не нужны, с помощью метода:
Все очень просто.
2) Второй способ это заимплементить ваши классы (слово конечно не очень, но надеюсь все поймут) от интерфейса IKDispatcher и вы сможете получить все функциональности событийного фреймворка, и даже больше, за счет kotlin extension functions. Ниже хочу привести небольшой пример использования этого интерфейса:
Полный пример использования вы сможете найти по ссылке
KDispatcher на гитхабе
Спасибо, что дочитали до конца. Буду очень рад отзывам и помощи в развитие проекта.
Всем приятного кодинга на потрясающем языке KOTLIN!
В своей первой статье я хочу рассказать вам об одной полезной библиотеке, которую я написал, исключительно на Kotlin, и активно поддерживаю и развиваю. Называется она, — KDispatcher. Предназначена для рассылки и подписки на уведомления между вашими компонентами кода. Вы можете использовать его в любом kotlin-проекте, будь то Android, Frontend, Backend или KotlinNative.
Основные преимущества:
- Быстрая и простая подписка на события
- Приоритетность вызовов функций-слушателей (callbacks)
- Использование kotlin extension functions
- Потоко-безопасность
Итак, чтобы использовать эту библиотеку у себя в проекте, вам необходимо подключить ее через Gradle:
implementation 'com.rasalexman.kdispatcher:kdispatcher:x.y.z'
или Maven:
<dependency> <groupId>com.rasalexman.kdispatcher</groupId> <artifactId>kdispatcher</artifactId> <version>x.y.z</version> <type>pom</type> </dependency>
После этого, вы можете воспользоваться двумя способами:
1) Вызвать метод объекта:
KDispatcher.subscribe(eventName, ::listenerFunction, priority)
где, eventName — строковое название вашего события, на которое вы хотите подписаться; ::listenerFunction — функция, которая принимает один параметр типа Notification и может быть вида
(Notification<T>)->Unit
содержащий в себе объект ваших данных (data:T) и название события(eventName:String). Последний, не обязательный параметр, priority:Int — числовая переменная, для сортировки вызова ваших коллбэков (callback functions), так как вы можете подписать на одно событие сразу несколько слушателей. Чтобы передать событие вам необходимо вызвать метод:
KDispatcher.call(eventName:String, data:Any)
Так же вы можете отписываться от прослушивания событий, когда они вам больше не нужны, с помощью метода:
KDispatcher.unsubscribe(eventName:String, ::listenerFunction)
Все очень просто.
2) Второй способ это заимплементить ваши классы (слово конечно не очень, но надеюсь все поймут) от интерфейса IKDispatcher и вы сможете получить все функциональности событийного фреймворка, и даже больше, за счет kotlin extension functions. Ниже хочу привести небольшой пример использования этого интерфейса:
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}") } }
Полный пример использования вы сможете найти по ссылке
KDispatcher на гитхабе
Спасибо, что дочитали до конца. Буду очень рад отзывам и помощи в развитие проекта.
Всем приятного кодинга на потрясающем языке KOTLIN!
