![]() |
Внесите, пожалуйста, ясность в MCV.
По MCV: Есть контроллер (С1), есть у него модель (M1). В С1 я создаю другой объект который тоже состоит из контроллера (С2) и модели (М2), и таких объектов может быть много в С1. Мне нужно в М1 делать расчеты которые связанны со всеми объектами принадлежащие С1, а значит нужны нужны ссылки на них и при чем не конкретно на них, а на модели этих объектов (М2-Мn).
1) Правильно ли хранить ссылки на модели дочерних объектов С1 в М1? 2) Если нет то как мне обращаться к моделям дочерних объектов из M1, ведь мне нужно использовать их для расчетов. |
1) правильно, ветвление модели (у тигера почитай)
пояни вот эту фразу: "В С1 я создаю другой объект который тоже состоит из контроллера (С2) и модели (М2)" |
1 - Модель предстваляет собой паттерн компоновщик.
2 - У базового контроллера есть ссылка на на модель. 3 - У всех контроллеров есть сслыка на базовый, через него можно получить и ссылку на базу данных (модель). |
Цитата:
|
Цитата:
Вот лично мне кажется что это чесать левое ухо правой ногой. По этому ищу решения попроще. Если посоветуйте, будет вообще замечательно. Добавлено через 15 минут Цитата:
|
Да, сори, забыл написать что модель public. То есть из либого контроллера можно достучатся до либого элемента данных добавленых в основную модель.
|
Ну я конечно хз что там автор планирует, но можно примерно так всё решить:
1. C1 содержит в себе М1. 2. М1 состоит из нескольких маленьких моделей SM1-SMn(SmallModel) (ну массив дочерних моделей или как-то так) 3. С1 имеет ссылки на все Дочерние контроллеры. Так же С1 подписывается на их Ивенты. 4. если надо что-то поменять по инициативе Дочернего контроллера он просто диспатчит событие (на которое подписан С1) "Контроллер поменяй модель" 5. ... 6. PROFIT //****** З.Ы. Я бы тут диспатчил не Event а DataEvent - так как ДатаИвент может в своем теле содержать еще и строку кроме самого типа. Таким образом грамотно продумав систему сообщений можно обойтись без создания своего класса ивента. Добавлено через 1 минуту Публичный геттер на модель я хз. Чтоб геттером воспользоваться надо ссылку иметь, а чтоб дочерние контроллеры на родтеля ссылку имели - это уже не ок. Так что в попу публичный геттер на модель. |
Dukobpa3, хм... интересный вариант, но мне непонятно кто создает SmallModels.
Например С1 создал подобъект c2 и по идеи м2 должен создавать с2, но у него нету ссылки на М1. И как правильно создавать м2 в М1? |
Цитата:
Цитата:
Добавлено через 2 минуты Главный контроллер видит такое событие с такой просьбой, обновляет главную модель, создает в ней меаленькую модель и пихает ссылку на эту маленькую модель в маленький контроллер. Это как один из вариантов. Можно же не давать ссылку на маленькую модель в маленький контроллер, а менять всю модель большим контроллером исключительно по событиям_просьбам от маленьких контроллеров. Как еще один вариант - главный контроллер изначально создает модель с ее дочерними моделями. Потом создает пачку контроллеров, потом в эти контроллеры передает ссылки для маленьких моделей. Добавлено через 3 минуты Всё зависит от требований всего приложения или текущего модуля. В любом случае передавать ссылку народителя в дите - плохой вариант. Добавлено через 5 минут В большинстве случаев при такой структуре можно обойтись без маленьких контроллеров. А оперировать исключительно одним большим контроллером в котором будет большая модель и большая вью. Большая модель будет в себе содержать кучу маленьких моделек, а большая вью будет в себе содержать кучу маленьких вьюшек которые будут связаны с маленькими модельками. А рулить всем будет один большой контроллер. |
Ну ладно, я пошел жарить попкорн
|
| Часовой пояс GMT +4, время: 17:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.