Давайте посмотрим на разницу между моделью, представлением и контроллером.
- представление - это способ взаимодействия пользователя с приложением. Он должен только касаться получения входных данных от пользователя и отправки выходных данных пользователю. Любые другие операции должны быть делегированы чему-то, что не является представлением.
- Модель - это то, как приложение обрабатывает необходимые операции. Он не должен знать или заботиться о том, как / где используется результат этих операций. Он просто выполняет запрошенное действие и возвращает результат запрашивающей стороне.
- Контроллер - это то, что устанавливает пути / адаптеры связи между представлением и моделью. Это единственная сущность, которая знает, что существует представление и модель;они не должны знать о существовании друг друга или контролера, так как им не нужно заботиться об этом. Все, что им нужно, это адаптер, который позволяет им взаимодействовать с какой-либо внешней сущностью, которую предоставляет контроллер.
Учитывая эту информацию, для меня имеет смысл, что при нажатии вашей кнопки должен быть сделан запроск вещам, которые обрабатывают его запросы через свой адаптер. Этот адаптер направляет запрос в модель, которая выполняет операцию и возвращает результат. Таким образом, представление ничего не знает о том, куда направляется его запрос или откуда поступает ответ, и модель не имеет представления о том, что представление является тем, которое запрашивает действие и ответ. Это сохраняет инкапсуляцию.