Ответ
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 - добавляет новые операции к объектам без их изменения. Используется в парсерах и компиляторах.