Вопрос номер три в моем стремлении правильно понять MVC до Я его реализую:
Я имею в виду два случая:
- Основное применение
окно должно запустить
окно настроек. (Один взгляд
вызывая другой вид.)
- Основная модель для приложения
необходимо получить доступ к собственности
в настройках модели. (Одна модель
доступ к другой модели.)
Эти вопросы связаны с тем, что они оба связаны с обменом данными через триплеты Model-View-Controller - тема, о которой я не нашел большого обсуждения в своем поиске по Google.
Очевидный способ исправить это - обернуть все в объект «приложения» верхнего уровня, который обрабатывает транзакции между моделями и позволяет контроллерам вызывать методы друг друга. Я видел, как это реализовано, но я не уверен, что это хорошая идея. Я также вижу возможности, связанные с тем, что Контроллеры наблюдают более чем за одной Моделью и реагируют на более чем одно Представление, но кажется, что это станет очень загроможденным и трудным для отслеживания.
Предложения о том, как лучше всего реализовать такого рода перекрестные разговоры? Я чувствую, что это очень очевидный вопрос, но я не смог найти хорошо документированное решение.
В более широком смысле, если у кого-нибудь есть ссылка, показывающая типичные подходы к такого рода проблемам MVC, я бы хотел ее увидеть. Мне не очень повезло найти твердые, нетривиальные ссылки. Примеры на Python были бы хороши, но я с удовольствием прочитаю что угодно.
Редактировать 1 :
Я вижу некоторые довольно интересные вещи, сказанные ниже, и в целом, похоже, ни у кого нет проблем с подходом, который я описал. Это уже почти ленивая форма дизайна FrontController, которую описывает Винсент. Я, конечно, не предвижу никаких проблем в реализации этого паттерна, однако не похоже, чтобы кто-то действительно обращался к этому вопросу в отношении коммуникации между моделями. Все ответы, кажется, касаются связи между объектами в одной модели. Меня больше интересует поддержка отдельных моделей для отдельных компонентов приложения, чтобы я не вставлял пятьдесят свойств состояния в один класс Model. Должен ли я поддерживать их как подмодели вместо этого?