Кто является контроллером в архитектуре документов Cocoa MVC? - PullRequest
3 голосов
/ 11 сентября 2011

Я нахожусь в процессе изучения какао. Я изучал 3 ключевых класса, которые составляют основу архитектуры документов в Какао.

  • NSDocument подкласс
  • NSWindowController или его подкласс
  • NSDocumentController

Я думал, NSWindowController должен быть Контроллер в терминах MVC, а NSDocument является Модель . Любое представление, которое мы создаем в конструкторе интерфейсов, по сути будет View . Если он верен, то NSWindowController или его подкласс должен получить экземпляр NSDocument и обрабатывать все задачи сохранения, загрузки и обновления. Но, читая документацию и книги, кажется, что NSDocument сама справляется с этими задачами. Кажется, что модель выполняет часть работы контроллера, и мне трудно ее переварить. Что мне не хватает? Подскажите, пожалуйста, концептуальную модель?

Ответы [ 2 ]

4 голосов
/ 11 сентября 2011

NSDocument вряд ли можно считать модельным объектом.Это контроллер модели, он владеет моделью данных.Кроме того, он владеет оконными контроллерами, чего не должен делать объект модели.Контроллер модели не следует путать с контроллером представления, которому принадлежит представление.Итак, я бы сказал, что NSDocument не может быть абсолютно согласован ни с одним из этих элементов шаблона Mode-View-Controller.

1 голос
/ 11 сентября 2011

Все три класса являются контроллерами. Так же, как у вас разные виды представлений и разные типы объектов модели, у вас также есть разные виды контроллеров. Одна из важных особенностей MVC заключается в том, что он способствует повторному использованию, особенно в классах представлений и моделей. Таким образом, большая ответственность контроллеров заключается в том, чтобы специализировать или адаптировать эти повторно используемые классы к конкретным потребностям приложения. В то время как контроллеры часто объясняются с точки зрения посредничества между моделью и представлением, я думаю, что было бы ошибкой предполагать, что каждое взаимодействие с контроллером должно включать как модель, так и представление, или что каждый контроллер даже имеет дело непосредственно с моделями и представлениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...