Диаграмма 1 является правильным изображением шаблона MVC.
Сплошные линии представляют реальную ссылку, как в переменной. Это означает, что вы должны ожидать увидеть экземпляр модели как в представлении, так и в контроллере.
Пунктирные линии представляют вызовы функций или сообщения от одного к другому. Пунктирная линия от модели к представлению реализуется через шаблон Observer, где что-то изменилось в модели и имеет ссылку на представление (через API наблюдателя модели), где он вызывает метод. Нечто подобное observer[i].update("name", value, self)
, которое вызывается в модели при каждом изменении.
Пунктирная линия между представлением и контроллером - это представление, отправляющее сообщение контроллеру. Представьте себе кнопку в пользовательском интерфейсе, которая нажата. Контроллер прослушивает это событие и обрабатывает его.
Примером коммуникационного потока может быть нажатие кнопки: Просмотр отправляет сообщение контроллеру. Контроллер обрабатывает это событие, где он обновляет свой экземпляр модели, скажем model.name
. Модель имеет метод setter
, который обновляет name
и вызывает метод наподобие changed
, который затем зацикливается на своих наблюдателях и вызывает .update
для каждого наблюдателя. Представление, ранее subscribed
для Модели и получающее update
, вызывается со старым и новым значениями name
. Метод update
в представлении обновляет значение имени в label
. Готово.

Слайд-колода, описывающая MVC: https://pl.csie.ntut.edu.tw/~ctchen/pdf/InsideSmalltalkMVC-public.pdf
C2 Wiki MVC статья:
http://wiki.c2.com/?ModelViewController