Представления привязаны к моделям.Поскольку представления визуализируют модели, они должны иметь глубокие знания о модели, и просто невозможно обойти ее.Некоторые виды являются общими, и у них есть «общие» модели.Здесь вы можете попытаться адаптировать свою фактическую модель к общей, чтобы «общее» представление могло использовать ваши данные.Но даже с этими общими моделями представления по-прежнему тесно связаны с ними.
Модели управляют данными, состоянием.В то время как представление обладает глубоким знанием модели, модель независима от представления.Это просто не волнует.Таким образом, вы можете иметь несколько видов для одной и той же модели.
Однако модель должна информировать других об изменениях в модели.Обычно в Java вы используете PropertyChangeListener.Этот механизм позволяет модели просто выкрикивать изменения оптом, и любой желающий может прослушать эти изменения и воздействовать на них, например, на ваш взгляд.
Простой пример: игровой объект может получить урон от пули,и это снижается до уровня ниже 50% здоровья.Вид может видеть, что состояние здоровья уменьшилось, и изменить изображение модели (скажем, добавить дым или что-то еще).
Контроллер обычно тесно связан с видом и моделью.Он знает возможности представления (например, его размер и другие области интереса) и знает, как изменить модель.Например, если щелкнуть мышью, контроллер преобразует точку мыши в координату относительно вида, и от этого определяет, какой объект был нажат.Как только он определяет объект, по которому щелкнули, он может установить модель для объекта, скажем, "selected".
Затем модель сообщает, что ее свойство "selected" изменилось.Представление видит это, находит ограничивающий прямоугольник для модели, которая изменилась, и делает недействительным этот прямоугольник на своем дисплее.
Наконец, Java приходит в себя и говорит представлению «Эй, нужно нарисовать 10,10,100,100 Rect»,И представление находит модели в этом прямоугольнике, рисует новое представление объекта с «выбранной» границей или чем-то еще.
Вот как работает весь цикл.