В данный момент я прохожу рефакторинг и реорганизацию своего приложения. Я понял, что некоторое разделение между моделями и представлениями, а также их контроллерами уменьшилось, и я хочу кое-что очистить.
В моем приложении используется несколько ключевых классов: NSPersistentDocument, NSWindowController и класс модели.
Класс NSPersistentDocument действует как «модель-контроллер»; он владеет экземпляром класса модели и управляет всеми взаимодействиями с моделью.
Класс NSWindowController действует как «контроллер представления»; он владеет главным окном и управляет взаимодействием представлений в главном окне. Этот класс также является владельцем файла для файла пера, в котором определено окно.
Проблема, которую я вижу здесь, в том, что у меня нет настоящего «контроллера». Мой текущий дизайн заставляет контроллер модели и контроллер представления знать друг о друге. Между ними нет объекта для медитации, и из-за этого моя модель и представление не разделены четко, что делает поддержку нескольких представлений или моделей проблемой.
Я хотел бы переместить функциональные возможности обоих моих существующих контроллеров в новый класс «контроллера», который будет действовать как контроллер между контроллером модели и контроллером представления. В конце концов, это все еще шаблон проектирования MVC с немного большей структурой.
Однако мне трудно понять, как это вписывается в архитектуру приложений Cocoa, основанную на документах.
Самый большой вопрос, который у меня есть, - где и как будет создан этот новый объект контроллера? Как это вписывается в архитектуру Какао? Я борюсь против архитектуры Какао, и есть ли лучший способ сделать это?
Спасибо.