Важно чтоб ты понимал что значит "напрямую меняет модель".
Да, контроллер имеет доступ к паблик методам модели. Но их должен быть минимум.
Напрямую меняет модель это не: model.counter += 1. Это model.parseDataFromServer(data). А модель уже сама распарсит и сама разберется что в этом месте надо сделать counter += 1, а вот здесь dispathEvent(ModelEvent.CHANGE)
Добавлено через 1 минуту
Это и будет называться "логика в модели". Все цифры в модели. Контролер не понимает откуда берется +=1 или -=1. Контроллер просто знает что "поступили новые данные, модель должна обновиться."