Зачастую при проектировании UI форм интерфейса возникает задача скомпоновать стандартные элементы управления в некоторый более высокоуровневый объект с индивидуальным поведением в целях инкапсуляции и/или повторного применения.
В данном посте я опишу возможность повторного использования презентера для управления различными элементами UI.
Сама идея повторного использования презентера противоречит догме Билла Кратохвила о том, что «презентер не предназначен для повторного использования», я не собираюсь опровергать авторитетного эксперта (без иронии), а изложу мое видение.
Итак, еще раз, кто такой презентер:
Presenter – (англ.) представитель, а в жаргоне сотрудников TV эфира (TV news presenter) - ведущий (программы). Последнее, по моему мнению, как нельзя лучше отображает его назначение. Я пошёл дальше и провел аналогию презентера с продюсером эстрадной звезды, детально расписав цели, роли, ответственности, но нашел в себе силы вовремя остановиться J
И все же, в концепции шаблона MVP-VM, presenter является представителем не только интерфейса пользователя, но и отвечает за то, каким функционалом этот интерфейс будет обладать. Функционал представления здесь ключевая фраза, именно эту характеристику я и буду повторно использовать.