![]() |
|
||||||||||
|
|
|
|||||
|
Эмммм... я хз конечно но в моем представлении контролу сеттеры вообще нафиг не надо, это жеж обсервер чистой воды.
Всех слушает через события, а сам рулит моделью (а вьюха слушает модель и рулится согласно купленным билетам) (может это я разбаловался pureMVC и Robotlegs просто, но там есть система нотификейшенов, через которую контроллеры между собой общаются, потому там нет нужды главному контроллеру что-то дергать в дочернем, и главный контроллер просто шлет нотификейшен)
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
роботлегс не читал, а в pureMVC нотификешен - это объект-событие с именем и данными, так кажется?
можно так и так. при ветвлении контроллов лучше обсервер, у меня другой случай - здесь целесообразней сеттеры. а там в методе-слушателе сразу дергается сеттер модели? если конечно цель - только передать в модель новые данные. |
|
|||||
|
ну суть в том что нотификейшен имеет имя и данные и это впринципе всё что надо знать.
Это просто инструмент а как его использовать уже вопрос левый. Я зачастую шлю нотификейшены даже без данных, такое себе глобальное событие просто. А когда с данными то опять же два варианта, часто просто достаточно в контроллере разобрать эти данные и сделать выводы, а иногда и запушить эти данные в модель. Но как я сказал выше - я стараюсь делать так чтоб контроллер напрямую вьюхой не рулил, поэтому практически каждый нотификейшн ведет к тому что контроллер что-то меняет в модели. Но опять же по ситуации))) Панацеи нету ![]() Добавлено через 6 минут Тут еще стоит понимать что контролер получивший нотификацию может быть каким-то высокоуровневым контроллером на уровне всего приложения, а не рулящий каким-то маленьким модулем, тогда получив нотификацию он ничего никуда не записывает а просто посылает уже другую нотификацию, так сказать адресную. пример: - коннектор к серверу (делаю его обычно контролером, но без модели и вью, по сути просто обсервер в этой глобальной системе нотификаций) получает данные с сервера - коннектор посылает нотификацию "я получил вот такие данные" - хостКонтроллер получает эту нотификацию, видит данные, парсит - хостКонтроллер отправляет нотификацию в зависимости от полученных данных, эта нотификация уже адресная в конкретный модуль. На эту нотификацию подписаны уже не все кому не лень, а кто-то один. - тот кто-то один получает эту нотификацию и уже он пишет в модель новые данные полученные с сервера.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Цитата:
Или "уж если все так, то и этот пусть будет как все"? Или, просто, через фреймворк по другому не получится? А... или это, чтобы удерживать уровень абстракции? Последний раз редактировалось fish_r; 09.06.2011 в 21:22. |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
В этом случае дочерние контроллеры должны знать класс родительского. зачем?
Да и удобнее читать такой код(событийный).В хост контроллере прописали карту событий - смотрим хэндлеры. Типа деклартивно описываешь логику. А тут нужно погружаться в дочерние контроллеры чтобы узнать что они что-то там вызвали у родителя.
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 09.06.2011 в 21:24. |
|
|||||
|
Цитата:
Та и как Котяра говорит проще ведь сделать список нотификация - хентлер, чем помнить адреса каждого внука и дергать напрямую детей сеттерами. А вдруг я в дитяти поменяю внутреннею структуру и этого сеттера либо вообще не станет, либо начнет устанавливать что-то другое? - это еще один аргумент в пользу нотификаций-событий. И не путайте нотификации с событиями. Нотификация это глобальная муть, там своя схема, вникал как-то, но на пальцах долго объяснять. Есть глобальный контейнер в котором регистрируются все контроллеры, и эти контроллеры говорят глобальному контейнеру какие нотификации им удобнее слушать. А контейнер потом получает все нотификации и растусовывает по тем кто на них подписывался. Т.е. никаких ссылок друг на друга не надо чтоб подписаться на нотификации. Контролер даже может не знать кто ее послал, просто есть факт - получена нотификация - ее надо обработать, всё.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
в роботлегсах вообще много интересного)))
Там к примеру еще один паттерн знатный используется Dependency Injection кажись называется)) Суть в том что есть глобальный контейнер, в нем регистрируются все вьюхи, и потом любой контроллер по-умолчанию видит все вьюхи без всяких там импортов, ссылок и прочей хрени. Меня такая схема слегка коробит, но работает на ура.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Регистрация: Dec 2001
Сообщений: 4,159
|
Цитата:
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Цитата:
__________________
Отряд Котовскага |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:04. |
|
|
« Предыдущая тема | Следующая тема » |
|
|