Какие знаешь поведенческие архитектурные паттерны

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

Ответ

Observer - уведомляет подписчиков об изменениях. Пример в Android - LiveData:

liveData.observe(this) { data ->
    // handle data changes
}

Command - инкапсулирует запрос как объект. Используется в обработчиках кликов:

button.setOnClickListener { /* command */ }

State - позволяет объекту менять поведение при изменении состояния. Полезен для UI состояний:

sealed class ViewState {
    object Loading : ViewState()
    data class Content(val data: List<Item>) : ViewState()
    data class Error(val message: String) : ViewState()
}

Strategy - определяет семейство алгоритмов и делает их взаимозаменяемыми. Пример - разные алгоритмы сортировки.

Visitor - добавляет новые операции к объектам без их изменения. Используется в парсерах и компиляторах.