КЛАССЫ КОНТРОЛЛЕРА
Самое важное и единственное правило в написании классов контроллера при использовании паттерна MVC – «Классы контроллера должны взаимодействовать с моделью и только моделью». Работа любого класса контроллера должна выглядеть примерно следующим образом:

1. Обработка пользовательского ввода
2. Изменение значения экземпляра класса модели
3. Всё, третьего пункта нет

Классы контроллера всегда самые простые в написании не требуют много времени на их реализацию, так как зачастую логика их работы тривиальна. Все, что вам нужно сделать –исключить взаимодействие контроллера с отрисовкой – это очень важно!

Очень ярким примером может стать ситуация, при которой игрок может изменять одно значение из двух мест в игре. Представьте, что нужно дать возможность экипировать персонажа в игре тремя разными способами.

Для того, чтобы оба работали корректно вы должны реализовать классы контроллера так, чтобы они не взаимодействовали с отрисовкой.

Нельзя писать в классах контроллера вызов методов отрисовки модельных значений, вам все равно придется это переписывать, пощадите свое время!

Для того, чтобы вы в любой момент могли написать новый способ изменить модель, и он корректно работал нужно писать классы контроллера независимо от отрисовки. В игре про изменение значения такими классами выступают классы кнопок.

Как вы видите класс кнопки не изменяет значения классов отрисовки. При нажатии кнопки увеличивается значение модельного числа на значение переменной «difference». Из-за того, что класс контроллера написан правильно – можно вводить много различных классов отрисовки не внося никаких изменений в другой код.

ЗАЧЕМ?
Для того, чтобы вы могли быстро добавить новые способы изменения значения модели или изменить существующие варианты их отрисовки.