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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.10.2013, 18:15
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 61  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Интерфейс это как описание стандарта.
То что в производстве называется ГОСТ-ом. Т.е. описание требований к некоторому продукту. Но сам по себе ГОСТ бесполезен. Это просто свод правил поведения.

Точно так же и интерфейс. Если мы видим класс который имплементит интерфейс - значит можем быть уверенны что он соответствует этому стандарту.
Соответственно можем к нему обращаться по указанным именам переменных или функций.

Там где вы не знаете как нечто реализовать, но уже знаете список требований к нему, или же заранее знаете что реализаций будет много, но они должны соответствовать некоторому набору трабований - там становятся нужны интерфейсы.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 24.10.2013, 19:03
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 62  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Допустим, Вы сделали игру и Вы хотите, чтобы кто-то еще сделал для нее разные сущности - предметы, оружие, врагов. Для совместимости Ваших и сторонних классов и придуман интерфейс. Если сторонний класс не имеет нужных Вам интерфейсов (их может быть несколько) Вы, используя фабрику, наделяете его нужным интерфейсом. Исходный класс остается таким каким и был. Новый класс как бы проксирует его.

Добавлено через 1 минуту
Также интерфейсы используются для унификации API


Последний раз редактировалось Babylon; 24.10.2013 в 19:14.
Старый 28.10.2013, 14:24
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 63  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Также интерфейсы используются для унификации API
Масло масляное.
API - Application Public Interface
__________________
Отряд Котовскага

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
В контексте масла этот кусок меня куда больше смущает
Цитата:
Допустим, Вы сделали игру и Вы хотите, чтобы кто-то еще сделал для нее разные сущности - предметы, оружие, врагов. Для совместимости Ваших и сторонних классов и придуман интерфейс.
Вот получили мы с тобой интерфейс IWeapon, будем строгать для игры пушки. Реализовали, сделали. Я унаследовал свою пушку от Sprite, а ты от XML. Чья пушка вызовет эксепшн при добавлении в дисплай лист?
Значит, для примера куда больше подходит псевдоабстрактный класс, унаследованный от DO.
Цитата:
Если сторонний класс не имеет нужных Вам интерфейсов (их может быть несколько) Вы, используя фабрику, наделяете его нужным интерфейсом.
Метопрограммирование – это чудесно, но, к сожалению, в языке оно развито так же плохо, как и лямбды.
Фабрика – как-бы-паттерн который создаёт экземпляры в рантайме. Поделись опытом, как в рантайме наделять классами. Действительно ли оно стоит? Возможно, эффективней будет всё-таки выкинуть фабрику да писать классы в редакторе, по старинке, складывая головную боль на компилятор?
Цитата:
Новый класс как бы проксирует его.
Почему как-бы? Это и есть прокси. Причем в самом настоящем его оверхеде. Вместо реплики "а класс-то неизменен!" лучше изменить исходный класс – вот где ниндзюцу.
(да, не всегда есть доступ к исходным кодам других классов, но... Станиславский не поверит.)

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

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Цитата:
Сообщение от Psycho Tiger
Я унаследовал свою пушку от Sprite, а ты от XML.
Вот здесь я в кои-то веки на сторону бабулона стану.
Это уже не косяк подхода, это косяк флеша, что он не имеет никаких интерфейсов для дисплей-листа, окромя IBitmapDrawable. Который, собственно, никуда не упирается абсолютно.
Несколько проектов подряд последних были модульные, и именно с такой постановкой задачи как озвучил бабулон. Часть модулей писали мы, часть аустсорсили.
Благо что каждый модуль это флешка, потому он просто физически не может быть ничем кроме спрайта. А если бы они колбасили нам допустим одну библиотеку в которой пачка классов-модулей - была бы *опа.

Но опять же повторюсь - это адобовцы косоруко проектировали стандартные пакеты ас3.
а как было бы круто:
Код AS3:
public interface IWeapon extends IDisplayObject {}
Но остается только мечтать.
__________________
Кто к нам с чем для чего - тот у нас того от того.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Но остается только мечтать.
Не понимаю. И что даст этот интерфейс? Интерфейс говорит о том, какие методы есть У объекта. Он НЕ говорит о том, что другой объект может сделать с экземпляром интерфейса. То есть интерфейс не позволит Вам делать addChild() для его представителя.
Если рассматривать интерфейс-метку типа IBitmapDrawable, который как раз говорит что можно сделать С объектом, то я, конечно, извиняюсь, но вот создадите Вы наследника EventDispatcher к примеру, и пометите его как IBitmapDrawable (или IDisplayObject). И что?
Дело не в "планировании классов", а в технической невозможности отображать "то, не знаю что". DisplayObjectы это сущности плеера, а не языка, и создавать свои Вы не можете технически. Природа Интерфейса же такова, что ЛЮБОЙ объект может подписаться его реализовывать. Это противоречие нерешаемо. То есть, решаемо тем, что такого интерфейса нет. Потому что его в принципе нет. Технически.
__________________
Reality.getBounds(this);

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

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Цитата:
И что даст этот интерфейс?
То же что и битмап дровабл.
А что дает IEventDispatcher?
В нашей ситуации пример с дроваблом - более подходит.
Суть то та же. "Нечто, которое можно отрисовать". Только в случае с дроваблом - на битмапу. А в случае с ДО - добавить в ДЛ.
Во всяком случае, с текущей архитектурой это, скорее всего, не решаемо. Но я уверен что это не настолько уж проблематично было предусмотреть изначально.
__________________
Кто к нам с чем для чего - тот у нас того от того.

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

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

Старый 28.10.2013, 16:13
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 69  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
А мне лишь жаль, что нельзя наследоваться от DO для создания контейнера без всяческих излишеств.
Хотя возможно, что неиспользуемые методы и свойства супер класса не добавляются при компиляции.
Но у меня был момент, когда я смотрел, что из себя представляет класс унаследованный от Sprite через describeType..
Там так много всего.

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

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Лол, а я в дровабл не заглядывал никогда.
Он пустой, оказывается
Ну с такой реализацией нафиг не нужен интерфейс для до. Я просто думал там какой-то геттер выдающий как минимум шейп или хз.

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

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

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

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


 


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


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