Что такое парадигма Publisher/Subscriber

«Что такое парадигма Publisher/Subscriber» — вопрос из категории Реактивное программирование, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Publisher/Subscriber (Pub/Sub) — это шаблон проектирования, где объекты (подписчики) получают уведомления об изменениях от другого объекта (издателя) без явной зависимости между ними.

Ключевые моменты:

  • Издатель (Publisher) управляет списком подписчиков (Subscribers).
  • Подписчики регистрируются у издателя для получения событий.
  • При изменении состояния издатель уведомляет всех подписчиков.

Пример в Kotlin:

interface Subscriber {
    fun update(message: String)
}

class Publisher {
    private val subscribers = mutableListOf<Subscriber>()

    fun subscribe(subscriber: Subscriber) {
        subscribers.add(subscriber)
    }

    fun publish(message: String) {
        subscribers.forEach { it.update(message) }
    }
}

Использование:

  • EventBus, RxJava, LiveData в Android.
  • Уменьшает связность компонентов.