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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.01.2011, 19:44
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 21  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Показываем:
Код AS3:
package  
{
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.IEventDispatcher;
 
 
	public class MyIEventDispatcher extends Object implements IEventDispatcher
	{
 
		public function MyIEventDispatcher() 
		{
			_eventDispatcher = new EventDispatcher( this );
		}
 
 
 
		private var _eventDispatcher:EventDispatcher;
 
 
 
		public function dispatchEvent( event:Event ):Boolean 
		{
			return _eventDispatcher.dispatchEvent( event );
		}
 
		public function hasEventListener( type:String ):Boolean 
		{
			return _eventDispatcher.hasEventListener( type );
		}
 
		public function willTrigger( type:String ):Boolean 
		{
			return _eventDispatcher.willTrigger( type );
		}
 
		public function removeEventListener( type:String, listener:Function, useCapture:Boolean=false ):void 
		{
			_eventDispatcher.removeEventListener( type, listener, useCapture );
		}
 
		public function addEventListener( type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false ):void 
		{
			_eventDispatcher.addEventListener( type, listener, useCapture, priority, useWeakReference );
		}
 
	}
 
}

Старый 15.01.2011, 21:37
semenyakinVS вне форума Посмотреть профиль Отправить личное сообщение для semenyakinVS Найти все сообщения от semenyakinVS
  № 22  
Ответить с цитированием
semenyakinVS

Регистрация: Mar 2010
Сообщений: 137
Цитата:
Сообщение от JackFromChaos Посмотреть сообщение
предпочитайте композицию наследованию классов"(с) Банда четырех.
Кто это сказал? Плохая идея.

Задача: "Человек - наследник безмозглой обезьяны. У него есть мозг".

Реализация в таком вот подходе:
"Человек - оболочка с обезьяной внутри. Плюс у него есть мозг".

Реализация в подходе наследования:
"Человек – следующие звено в развитии обезьяны. У него есть мозг."

По-моему, второе звучит более логично.

Привожу сравнительную характеристику собственного производства.

«Наследование-включение»:
«+»
1. Возможность реализовывать функции-провайдеры в наследнике («Декоратор»). Таким образом мы можем запретить к использованию некоторые методы отца (Тут следует заметить, что то же самое можно реализовать и в подходе наследования, но в таком случаи это будет менее естественно для данного подхода).
2. Можно множественно наследовать там, где множественно наследовать нельзя.

«-»
1. Минус - громоздкий код («Декоратор» всегда громоздок).
2. Уничтожение одного из подходов к построению логики кода. Таким образом мы не сможем никак выделить архитектурой родственность между объектами.

«Наследование-наследование»:
«+»
1. Реализует стандарт С++.
2. Изящно – нет лишнего кода.
3. Минус один уровень вызова через точку.

«-»
1. Сложно представить. При неправильном подходе может вызвать захламлённость структуры.
2. Требует умения думать абстрактно.


Цитата:
Сообщение от JackFromChaos Посмотреть сообщение
Вообще почитайте "Приемы объектно ориентированного проектирование - паттерны проектирования". Глава введение, раздел "наследования и композиция".
Я читал книгу по шаблонам авторства Гамма. Почти все книги по паттернам рассматривают java-подобные подходы к архитектуре, где множественное наследование заменено интерфейсами.

Цитата:
Сообщение от JackFromChaos Посмотреть сообщение
В результате программист зависит не от логики, а от реализации компилятора...
Множественное наследование присуствует в стандарте С++. Любой компилятор под него обязан реализовывать множественное наследование.

Думаю, Страуструп дураком не был.

Старый 15.01.2011, 21:59
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 23  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Цитата:
Кто это сказал? Плохая идея.
Я рад что наконец-то Вы пришли и сказали нам, что GoF`ы были не кем-то, кого стоит знать. =)

Старый 15.01.2011, 22:10
semenyakinVS вне форума Посмотреть профиль Отправить личное сообщение для semenyakinVS Найти все сообщения от semenyakinVS
  № 24  
Ответить с цитированием
semenyakinVS

Регистрация: Mar 2010
Сообщений: 137
А кто это?

Через некоторое время:

Почитал. Ясно... А какова их мотивация?


Последний раз редактировалось semenyakinVS; 15.01.2011 в 22:31. Причина: Почитал кто это
Старый 15.01.2011, 22:34
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 25  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Вы тут описывали нам Декоратор. Так вот он тоже с приставкой GoF.

Старый 15.01.2011, 23:30
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 26  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Почитал. Ясно... А какова их мотивация?
Восновном там проблемы с зависимостью всех классов от одного базового и разрастание оного,
второй минус - иерархия классов чаще выглядит как граф, а не как дерево и не вписывается в одиночное наследование (про множественное ничего не знаю), третий минус - невозможность динамически изменять дерево наследования (ну это, если требуется)

А разработчики as3 видимо посмотрели на Java, С#, D, ... и решили что и as3 без множественного наследования обойдется
Считается что оно проблемы создает


Последний раз редактировалось expl; 15.01.2011 в 23:57.
Старый 16.01.2011, 00:29
JackFromChaos вне форума Посмотреть профиль Отправить личное сообщение для JackFromChaos Найти все сообщения от JackFromChaos
  № 27  
Ответить с цитированием
JackFromChaos
 
Аватар для JackFromChaos

блогер
Регистрация: Jan 2008
Адрес: Донецк
Сообщений: 162
Записей в блоге: 2
Отправить сообщение для JackFromChaos с помощью Skype™
Пример реализации EventDispacher с помощью композиции:
Удалил, потому что пример был выше, просто чет не заметил его...
P.S.
На написание ушло не более 1 минуты... Медленнее чем просто унаследоваться, но не так уже и страшно...


Добавлено через 7 минут
Цитата:
Сообщение от semenyakinVS Посмотреть сообщение
Думаю, Страуструп дураком не был.
Страуструп при создании стандарта С++ 2.0 от множественного наследования избавился... Хотя шанс, что этот язык когда нибудь появится в реальности, не так уж и велик...
__________________
Искренне Ваш, Джек.


Последний раз редактировалось JackFromChaos; 16.01.2011 в 01:10.
Старый 16.01.2011, 00:38
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 28  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Имхо множественное наследование - это геморрой)))

Видимо я не один такой. С множественным наследованием в разы проще запутаться в своей же иерархии.
Интерфейсы многое решают, единственное что меня смущает в интерфейсах - я должен в любом случае переопределять заявленные в интерфейсе методы. Т.е. интерфейс он типа как просто обязалово для разраба, мол хочь не хочь, а вот этот набор методов ты должен описать, раз уж интерфейс имплементируешь.

В остальном же - я не знаю ситуаций где множественное наследование уж настолько необходимо, гораздо проще для понимания именно композиция, та и пользоваться удобнее, пофиг что лишняя точка в имени метода/параметра появляется.

Добавлено через 1 минуту
И вся ветка кажись завязалась вокруг диспатчера, с ним вообще проблем не вижу, та и примеров накидали кучу уже.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 16.01.2011, 00:41
JackFromChaos вне форума Посмотреть профиль Отправить личное сообщение для JackFromChaos Найти все сообщения от JackFromChaos
  № 29  
Ответить с цитированием
JackFromChaos
 
Аватар для JackFromChaos

блогер
Регистрация: Jan 2008
Адрес: Донецк
Сообщений: 162
Записей в блоге: 2
Отправить сообщение для JackFromChaos с помощью Skype™
Цитата:
Сообщение от semenyakinVS Посмотреть сообщение
Я читал книгу по шаблонам авторства Гамма. Почти все книги по паттернам рассматривают java-подобные подходы к архитектуре, где множественное наследование заменено интерфейсами.
Я конечно изеняюсь, но в книжке Гаммы, Хелма, Джонсона и Влиссидеса(все таки из было четвера), все примеры были на с++ и ориентирована она была на с++ прежде всего... но это так, к слову...
__________________
Искренне Ваш, Джек.

Старый 16.01.2011, 01:06
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 30  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
JackFromChaos, зачем писать точно такой же код, если он уже написан в посте номер 21?


Последний раз редактировалось i.o.; 16.01.2011 в 01:10.
Создать новую тему Ответ Часовой пояс GMT +4, время: 15:02.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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