КЛАССЫ ИНТЕРФЕЙСА
Главная задача – написать классы интерфейса так, чтобы они не мешали менять модель.
Пишите интерфейс так, чтобы вы могли беспрепятственно вносить правки в модель.
В основу реализации классов в паттерне MVC лежит паттерн Observer. Его можно реализовать встроенными средствами языка C#, например, использовав конструкцию event Action.
Реализация классов интефейса
В проектировании игр практически всегда применяется паттерн «Игровой цикл». Его используют для обработки пользовательского ввода, расчета физики и прочих процессов, протекающих в игре НЕПРЕРЫВНО. Велик соблазн написать интерфейс с использованием паттерна «Игровой цикл», каждый кадр обновляя значение на элементе интерфейса.
ПЛОХОЙ КОД
Этот код грузит систему. Обновление значения числа происходит каждый кадр, даже если число остается неизменно . Если весь интерфейс каждый кадр будет узнавать у модели, что ему отрисовывать – это нанесет огромный ущерб производительности.
Хороший код интерфейса вызывает методы отрисовки только тогда, когда состояние интерфейса должно поменяться. Для этого в классах модели необходимо реализовать паттерн Observer.
Класс ModelNumber с помощью конструкции public event Action<int> сообщает о том, что его значение изменилось. Это можно отследить в классе отрисовки. Причем событие возвращает число, которое нужно отрисовать в интерфейсе.
В классе NumberDrawer мы подписываемся на событие модельного класса и только после вызова события изменяем отрисованное число.
ОБЯЗАТЕЛЬНО ПИШИТЕ ИНТЕРФЕЙС ЧЕРЕЗ ПАТТЕРН OBSERVER
Теперь у нас три экземпляра классов отрисовки, которые выводят значение. Но мы можем быстро внести изменения. Представьте, что теперь вам нужно показать текущее значение, значение на два меньше и квадрат этого значения. В архитектуре MVC для этого достаточно написать только два класса-наследника и методы в них.
Реализация интерфейса через OBSERVER позволяет добавить новую функциональность, не изменяя старую, если вы будете придерживаться парадигмы ООП и паттерна MVC.
ЗАЧЕМ?
Чтобы вы могли беспрепятственно изменять классы модели, поддерживая скорость разработки игры на высоком уровне.
Если не реализовать классы интерфейса правильно – в вашу игру невозможно будет играть. FPS будет опускаться до 5 – 10 даже на самом мощном ПК, особенно если в отрисовке применяются расчеты или математические формулы.

