Сколько методов в интерфейсе View в MVI

Ответ

В интерфейсе View в MVI (Model-View-Intent) обычно объявляется один основной метод — render(), который принимает состояние (State) и обновляет UI в соответствии с ним. Однако иногда добавляют дополнительные методы, например, для обработки событий (events() или intents()), но это зависит от реализации.

Пример минимального интерфейса:

interface MviView<State, Intent> {
    fun render(state: State)
    fun intents(): Observable<Intent> // или Flow/Channel в корутинах
}

В чистом MVI View должен быть максимально простым и пассивным, поэтому чаще всего ограничиваются одним render().

Ответ 18+ 🔞

А, ну вот смотри, тут про MVI разговор. Тема, конечно, ёперный театр, но если разобраться — всё просто, как три копейки.

Так вот, смотри. Интерфейс этой самой View в MVI — это обычно такая тихая гавань, куда приплывает готовое состояние и говорит: «Ну что, братва, обновляйся». И главный, блядь, капитан на этом корабле — один-единственный метод render(). Он сидит, ждёт, когда ему принесут этот самый State, и тупо рисует по нему интерфейс. Никакой своей мозговой активности, чистое исполнительное звено. Доверия к нему, ебать, ноль, чтобы он сам не начал что-то решать.

Но иногда, понимаешь, народ начинает выёживаться. Хочется ему не просто картинку менять, а ещё и события какие-то ловить, интенты генерить. Вот и лепят тогда второй метод, например intents(), который возвращает поток этих самых намерений пользователя. Типа, «нажал кнопку — вот тебе интент OnButtonClicked».

Пример кода, чтобы было понятнее, вот смотри:

interface MviView<State, Intent> {
    fun render(state: State)
    fun intents(): Observable<Intent> // или Flow/Channel в корутинах
}

Видишь? Всё прозрачно. Но если уж говорить по-честному, по канону, то настоящий, блядь, пуританский MVI требует, чтобы View был тупым, как пробка. Никакой лишней движухи. Один render() — и все дела. Всю логику, всю работу с данными — нахуй, в презентер или в какую-нибудь умную компоненту. А View пусть сидит и красиво моргает пикселями, вот и вся его работа. Сам от такой простоты иногда охуеваешь, но в этом, блядь, и есть вся соль подхода.