Здравствуйте, уважаемые коллеги, любители 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!