![]() |
|
||||||||||
|
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Еще раз... при нормальной архитектуре родитель знает всех своих детей и может спокойно перебрать их циклом, отдавая приказ напрямую. Даже если воспользоваться событиями, картина то не изменится - произойдет то же самое, в цикле будет перебран массив листенеров и у каждого вызван метод-хендлер. Только при этом будет создаваться объект События и прочие действия. Имхо, это все лишнее и не имеет логики.
__________________
Reality.getBounds(this); |
|
|||||
|
Не понимаю, почему система
не имеет права на жизнь. Да, централизация рулит, да, она позволяет детям не знать о родителе, но ведь она приводит к чудовищной логике в родителе, который слишком много на себя берет. Неужели децентрализация рулит меньше? |
|
|||||
|
С каких пор Event Bus лишился логики? Солдаты могут быть в разных ротах, разных полках, разделены значительным состоянием и т.д. У детей могут быть разные родители, но тем не менее они должны выполнить приказ. Это два способа реализации одной задачи и они не взаимоисключающие.
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Не совсем. Это другой способ реализации другой задачи, описание которой следует за "они могут". Тем не менее суть остается той же самой, сложности эти разные окопы и полки не добавляют сверх того, что добавят при использовании событийной модели – ссылки то для подписки придется также протягивать во все щели. Названия разные, а способ один – вызов метода в каждом экземпляре списка.
__________________
Reality.getBounds(this); |
|
|||||
|
эм...про рацию не понял!
![]() |
|
|||||
|
Регистрация: Mar 2011
Сообщений: 101
|
Как то всЁ на разговоры про войну свалилось.
Скоро теорию ООП начнут на примере приготовления курицы-гриль объяснять. Куда все катицо... |
|
|||||
|
Цитата:
Цитата:
![]() Добавлено через 1 минуту Цитата:
Добавлено через 2 минуты хотя с другой стороны - какая разница на примере чего объяснять, главное чтобы понятно всем было! ![]() |
|
|||||
|
Цитата:
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Во-первых, это обычная логика, что и заложено собственно в ООП. Данная схема ее переворачивает. По логике вещей, предназначение детей знает тот, кто их народил. Он создавал эти экземпляры с известной ему целью. Само слово "родитель" не обязано означать контейнер, в котором непосредственно лежит экземпляр. Родитель это тот, кто его инициализировал и "бросил на поле боя". Поэтому именно у него права управления, у него логика. Логика будет чудовищной, если ее не распределить правильно. Никто же не заставляет вас описывать в Мейне смену стейтов каждой кнопки при наведении мыши. Надо правильно провести абстракцию, чтобы каждый занимался своим делом и знал его хорошо. Брал на себя ровно столько, сколько может сделать сам, обеспечивал свой жизненный цикл и управлял своими составляющими. Здесь невозможно делать наполовину правильно или на 75% логично. Надо стремиться к четкой иерархии. Если вы добавляете в класс ссылку на родителя, это «сильная связность». То есть вы не сможете использовать этот класс отдельно в другом проекте. Этот класс получил недостаточную абстракцию, он не самодостаточен, не может жить и работать отдельно от класса родителя установленного образца. Дети начинают требовать наличия определенных свойств у родителей, что противоречит всякой логике.
Конкретно о цепочке. Предположим, что она хороша. Тогда давайте использовать ее везде. Что мы получим? Всякие сеттеры типа width, height, rotation теряют свой смысл, ведь это некошерный прямой доступ к свойствам ребенка, больше он нам не нужен, у нас есть отличная система событий! Давайте подпишем ребенка на События от родителя - Event.SET_WIDTH, Event.SET_HEIGHT. Маразм? Но это ровно то, что вы предлагаете. Родитель знает своих детей, он их создал в своем теле. Дети не знают своих родителей (parent не в счет, это ссылка на контейнер, а не на родителя). AS3 устроен изначально по концепциям ООП. Родители знают свойства и методы своих детей, они импортировали их классы)). Они могут вызывать нужные методы напрямую, child.width = 5, без всех этих странных цепочек с созданием и распространением Событий. Дети же – наоборот, не знают кто их создал и кто ими управляет, это дает свободу создавать эти экземпляры в разных проектах разными родителями, использовать классы повторно, расширяя при необходимости, безо всякой сильной связности с родителем. Родитель не должен обладать какими-то особыми публичными методами для работы с этими экземплярами. Он может быть таким, как нужно данному проекту. Ваше решение использовать данный модуль в своем приложении не требует от вас переделки всего приложения ради этого модуля из-за того, что он требует от классов выше каких-то особых точек доступа, за которые он собирается их дергать, вмешиваясь в их работу. Такой модуль должен только информировать вышестоящих, но никак не управлять ими. Вышестоящие решат, что делать или не делать с этой информацией. Это и есть иерархия. Это – правильная и логичная цепочка связи.
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:09. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|