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