![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2009
Сообщений: 18
|
Получается. что bubbling тоже зло?
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Если X зло, то не значит что и Y тоже зло. Вам бы с такими выводами законы писать, что ли.
|
|
|||||
|
Регистрация: Aug 2009
Сообщений: 18
|
Если Y основано на тех же механизмах, что и X, то чем же такой вывод нелогичен? И если capturing де "нарушает инкапсуляцию" (хотел бы я знать, где он ее нарушает), то почему же bubbling - нет?
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Нарушает, потому что позволяет перехватить событие, уходящее в черный ящик. А выходящие из него всплывающие события никакой инкапсуляции не нарушают.
|
|
|||||
|
ветеран форума
|
Если по хорошему, то ни "Child1 Node" ни "Child2 Node" не должны вообще слушать каких либо событий для изменения своего состояния. Таким образом они получатся легко переносимыми и не так тесно связанными/зависящими от окружения.
Вместо подписывания на события они должны предоставить публичные методы для изменения своего состояния (желательно через интерфейсы) и заинтересованные в изменении этих компонентов объекты должны сами решать как и когда и на основе чего дергать эти методы. Ну это если говорить о масштабируемости и переносимости и реюзабельности того что вы пишете. А для простейших случаев (когда проект маленький, типа написал и забыл) пойдет и "зло" и "не зло" нарушающее или нет любые идеологии ![]()
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
|
Цитата:
Это если смотреть на мир через призму MVC.
__________________
...вселенская грусть |
|
|||||
|
Регистрация: Aug 2009
Сообщений: 18
|
Это всё происходит снаружи, а сам "черный ящик" [объект] никто не трогает. Поэтому никакого нарушения инкапсуляции нет ни в том, ни в другом случае.
|
|
|||||
|
Modus ponens
|
Да-да, конечно. Но вот только если кто-то подписался на capture вашего события, а вы в свою очеред подписались только на target + bubbling (что вы всегда делаете по умолчанию) - и потом в его обработачике случилась ошибка, или он тупо взял и stopImmediatePropagation() сделал - результат: ваш код не работает, но сделать с этим вы ничего не можете.
__________________
Hell is the possibility of sanity |
|
|||||
|
ветеран форума
|
Цитата:
![]()
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
|
Регистрация: Aug 2009
Сообщений: 18
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 19:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|