![]() |
|
||||||||||
|
|||||
|
А мне это совсем понятно.
Что такое DisplayObject? Объект, который можно добавить в дисплай-лист и визуализировать средствами рендера у флеш плеера. Любой DisplayObject это IDisplayObject. Но и любой IDisplayObject это DisplayObject. Зачем делать интерфейс? Незачем. Он лишний. Только чтобы в исключительной ситуации наследовать интерфейсы, вместо использования "as".
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Тогда уже toDisplayObject() : DisplayObject.
Насчет "замечательно" — сомнительно, т.к. дает возможность легко сломать компонент (например по незнанию или по неосторожности). Придется как в spark контейнерах перекрывать addChild / removeChild и т.д., в случаях если используются собственные методы добавления детей.
__________________
משיח לא בא משיח גם לא מטלפן Последний раз редактировалось alatar; 20.11.2011 в 20:01. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Так вся проблема чисто в потоке сознания. Именно в сознании программиста IComponent является DisplayObject. Программист считает этот интерфейс расширением ДО. Именно поэтому принимает IComponent и, ничуть не сомневаясь, на автомате пишет addChild(). Потому что для него компонент – несомненно ДО, и никак иначе. Это и есть суть маркера. Но компилятор не обладает такой верой, и кричит "А позвольте-ка! Что это вы мне тут подсовываете?" Ну так если Вы так уверены, что компонент всегда будет ДО, что мешает использовать кастинг? Сомневаетесь в себе – используйте более точную архитектуру.
Так что я с кем... в идеале я за минимум маркеров и приведений, но и конструкции, возвращающие аватары экземпляра мне не по душе, ибо костыль. Реально проблема кроется выше в генофонде, в косяках с построением наследования компонентов, я думаю. Надо там копать. Проектировать надо, а не писать как фишка ляжет и потом искать в написанном архитектурные решения. Надо изначально понимать, о чем вообще интерфейсы, а о чем – классы. Если над экземпляром будут совершаться действия и надо гарантировать, что над ним такие действия возможны – это не входит в круг обязанностей интерфейса. Интерфейс говорит "ЯМогуПожаритьКартошку", но никак не "МеняМожноЖаритьКакКартошку". Впрочем, с такими методами как IComponent#addAsChildTo(this) я уже ничему не удивляюсь... "картошка.жарься(печка)" вместо печка.пожарь(картошка). Приятная беседа получилась ![]()
__________________
Reality.getBounds(this); |
|
|||||
|
Цитата:
отсутсвтие интерфейса - это такая защита от попыток "имплементировать" нативные функции. Но зачем обобщать её, и говорить что везде, где с объектом надо что-то сделать непременно нужно использовать только наследники базовых классов? Так же не получится. Если мой класс смог реализовать мой(ненативынй) интерфейс - значит его можно передать в качестве параметра. Цитата:
Цитата:
Цитата:
Ухожу из дискуссии, пока медитация не даст результатов (пока не особо) Последний раз редактировалось expl; 20.11.2011 в 19:56. |
|
|||||
|
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 20.11.2011 в 20:08. |
|
|||||
|
Ок, мысль уловил, пытаюсь понять оличия, как бы они выглядели в коде.
Цитата:
Цитата:
Мы, вроде, говорили о том, что если над объектом надо что-то сделать - то надо передавать объекты с типом базового класса, а не с типом интерфейса, об этом же речь была? Если ограничиваться передачей только экземпляров класса, то нельзя передать экземпляры, унаследованные другими путями. Интерфейс описывает методы, интерфейс описывает методы, ... медитация идет нормально... 2 Wolsh: "Говори, не спрашивай" - это тоже самое что "Интерфейс говорит "ЯМогуПожаритьКартошку", но никак не "МеняМожноЖаритьКакКартошку" ", или последний принцип взят на вооружение откуда-то еще? Последний раз редактировалось expl; 20.11.2011 в 20:23. |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Цитата:
ну и для другого тоже. ну и IBitmapdrawable - как раз "меня можно отрисовать в битмапу".
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 20.11.2011 в 20:31. |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:00. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|