Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.08.2011, 13:37
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 1  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Еще раз... при нормальной архитектуре родитель знает всех своих детей и может спокойно перебрать их циклом, отдавая приказ напрямую. Даже если воспользоваться событиями, картина то не изменится - произойдет то же самое, в цикле будет перебран массив листенеров и у каждого вызван метод-хендлер. Только при этом будет создаваться объект События и прочие действия. Имхо, это все лишнее и не имеет логики.
__________________
Reality.getBounds(this);

Старый 12.08.2011, 03:05
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 2  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Не понимаю, почему система
Код:
child ---call of method--> parent
      <----event----------
не имеет права на жизнь.
Да, централизация рулит, да, она позволяет детям не знать о родителе,
но ведь она приводит к чудовищной логике в родителе, который слишком много на себя берет.
Неужели децентрализация рулит меньше?

Старый 11.08.2011, 13:49
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 3  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
С каких пор Event Bus лишился логики? Солдаты могут быть в разных ротах, разных полках, разделены значительным состоянием и т.д. У детей могут быть разные родители, но тем не менее они должны выполнить приказ. Это два способа реализации одной задачи и они не взаимоисключающие.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 11.08.2011, 14:07
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Не совсем. Это другой способ реализации другой задачи, описание которой следует за "они могут". Тем не менее суть остается той же самой, сложности эти разные окопы и полки не добавляют сверх того, что добавят при использовании событийной модели – ссылки то для подписки придется также протягивать во все щели. Названия разные, а способ один – вызов метода в каждом экземпляре списка.
__________________
Reality.getBounds(this);

Старый 11.08.2011, 15:28
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 5  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
эм...про рацию не понял!

Старый 11.08.2011, 15:32
2Sun вне форума Посмотреть профиль Отправить личное сообщение для 2Sun Найти все сообщения от 2Sun
  № 6  
Ответить с цитированием
2Sun
 
Аватар для 2Sun

Регистрация: Mar 2011
Сообщений: 101
Как то всЁ на разговоры про войну свалилось.
Скоро теорию ООП начнут на примере приготовления курицы-гриль объяснять.
Куда все катицо...

Старый 11.08.2011, 15:33
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 7  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
Цитата:
С каких пор Event Bus лишился логики? Солдаты могут быть в разных ротах, разных полках, разделены значительным состоянием и т.д. У детей могут быть разные родители, но тем не менее они должны выполнить приказ. Это два способа реализации одной задачи и они не взаимоисключающие.
ха, этот пример с солдатиками становится забавным. Прям флеш-стратегия!)))

Цитата:
Не совсем. Это другой способ реализации другой задачи, описание которой следует за "они могут". Тем не менее суть остается той же самой, сложности эти разные окопы и полки не добавляют сверх того, что добавят при использовании событийной модели – ссылки то для подписки придется также протягивать во все щели. Названия разные, а способ один – вызов метода в каждом экземпляре списка.
а что вы понимаете под "тянуть во все щели"? К счастью для нас солдатики во флеше могут быть дубликатами одного класса, следовательно написав подписку единожды в этом классе все его экземпляры будут уже знать какого папку им слушать!

Добавлено через 1 минуту
Цитата:
Как то всЁ на разговоры про войну свалилось.
Скоро теорию ООП начнут на примере приготовления курицы-гриль объяснять.
Куда все катицо...
Ну про курицу гриль это вы погорячились!))) Это скорее на каком то форуме домохозяек можно было бы такое встретить))

Добавлено через 2 минуты
хотя с другой стороны - какая разница на примере чего объяснять, главное чтобы понятно всем было!

Старый 11.08.2011, 15:53
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 8  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
эм...про рацию не понял!
При создании, каждому экземпляру класса, который должен реагировать на определенное событие, передается ссылка на экземпляр EventDispatcher (всем на один и тот же экземпляр). Эти классы подписываются у него на событие. После чего в этот диспатчер, класс сообщающий об изменениях (у него тоже должна быть ссылка на этот диспатчер) диспатчит событие.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 11.08.2011, 18:06
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 9  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
а что вы понимаете под "тянуть во все щели"? ... написав подписку единожды в этом классе все его экземпляры будут уже знать какого папку им слушать!
Ответ то был не Вам, и не про ваших "солдатиков" одного класса, а про войска alatar'a, у которого много разных полков. Если Вы не заметили, разноклассовость и разнородительность были его аргументом в пользу Событий. Вы же опять поняли все наоборот)) Я устал спорить, если честно - я предельно ясно свою позицию описал, хотите делать сильную связность - пожалуйста, дайте всем позывной штаба в статическую константу и пусть подписываются и слушают. Давайте доведем этот организм до такого расстройства, когда мозг будет информировать о своем состоянии пальцы, а пальцы - командовать мозгом.
__________________
Reality.getBounds(this);

Старый 12.08.2011, 12:04
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 10  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Во-первых, это обычная логика, что и заложено собственно в ООП. Данная схема ее переворачивает. По логике вещей, предназначение детей знает тот, кто их народил. Он создавал эти экземпляры с известной ему целью. Само слово "родитель" не обязано означать контейнер, в котором непосредственно лежит экземпляр. Родитель это тот, кто его инициализировал и "бросил на поле боя". Поэтому именно у него права управления, у него логика. Логика будет чудовищной, если ее не распределить правильно. Никто же не заставляет вас описывать в Мейне смену стейтов каждой кнопки при наведении мыши. Надо правильно провести абстракцию, чтобы каждый занимался своим делом и знал его хорошо. Брал на себя ровно столько, сколько может сделать сам, обеспечивал свой жизненный цикл и управлял своими составляющими. Здесь невозможно делать наполовину правильно или на 75% логично. Надо стремиться к четкой иерархии. Если вы добавляете в класс ссылку на родителя, это «сильная связность». То есть вы не сможете использовать этот класс отдельно в другом проекте. Этот класс получил недостаточную абстракцию, он не самодостаточен, не может жить и работать отдельно от класса родителя установленного образца. Дети начинают требовать наличия определенных свойств у родителей, что противоречит всякой логике.
Конкретно о цепочке. Предположим, что она хороша. Тогда давайте использовать ее везде. Что мы получим? Всякие сеттеры типа width, height, rotation теряют свой смысл, ведь это некошерный прямой доступ к свойствам ребенка, больше он нам не нужен, у нас есть отличная система событий! Давайте подпишем ребенка на События от родителя - Event.SET_WIDTH, Event.SET_HEIGHT. Маразм? Но это ровно то, что вы предлагаете.
Код AS3:
this.addEventListener(Event.SET_WIDTH, child.newWidthHandler);
Родитель знает своих детей, он их создал в своем теле. Дети не знают своих родителей (parent не в счет, это ссылка на контейнер, а не на родителя). AS3 устроен изначально по концепциям ООП. Родители знают свойства и методы своих детей, они импортировали их классы)). Они могут вызывать нужные методы напрямую, child.width = 5, без всех этих странных цепочек с созданием и распространением Событий. Дети же – наоборот, не знают кто их создал и кто ими управляет, это дает свободу создавать эти экземпляры в разных проектах разными родителями, использовать классы повторно, расширяя при необходимости, безо всякой сильной связности с родителем. Родитель не должен обладать какими-то особыми публичными методами для работы с этими экземплярами. Он может быть таким, как нужно данному проекту. Ваше решение использовать данный модуль в своем приложении не требует от вас переделки всего приложения ради этого модуля из-за того, что он требует от классов выше каких-то особых точек доступа, за которые он собирается их дергать, вмешиваясь в их работу. Такой модуль должен только информировать вышестоящих, но никак не управлять ими. Вышестоящие решат, что делать или не делать с этой информацией. Это и есть иерархия. Это – правильная и логичная цепочка связи.
__________________
Reality.getBounds(this);

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:09.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:09.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.