Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Понимание смысла интерфейсов (http://www.flasher.ru/forum/showthread.php?t=130250)

Psycho Tiger 21.09.2009 18:24

Понимание смысла интерфейсов
 
Зачем? Например, я прекрасно понимаю, что методы "умереть", "переместится в" и "показать широченную улыбку" могут быть у классов главного героя, врага и неприметного старичка на заднем фоне, но я не могу найти интерфейсам лучшей практики, нежели создать эти методы 2-умя кнопками в каком нибудь редакторе коде, вместо набивания их заново вручную.
Посвятите новичка, зачем они нужны?)

alekslitvinenk 21.09.2009 18:28

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

dimarik 21.09.2009 18:34

Экземпляр приобретает тип интерфейса.

Код AS3:

var movable:IMovable = AFactory.construct(1);
movable.move(); // Утка полетела
 
movable = AFactory.construct(2);
movable.move(); // Собачка попрыгала
 
 
class AFactory {
        public static function construct(value:uint):IMovable {
                switch (value) {
                        case 1:
                                return new Duck();
                                break;
 
                        case 2:
                                return new Dog();
                                break;
                }
        }
}
 
interface IMovable {
        function move():void;
}
 
class Duck implements IMovable {
        public function move():void {
                this.fly();
        }
}
 
class Dog implements IMovable {
        public function move():void {
                this.jump();
        }
}


MrPoma 21.09.2009 18:38

Посмотри на иерархию наследования, где в ней расположен класс BitmapData и DisplayObject. Метод BitmapData.draw() может принимать экземпляры обоих этих классов. Как это реализовать без интерфейса IBitmapDrawable? Передавать Object - не выход. Интерфейс связывает два узла в дереве, которые расположены на разных ветвях (хотя и не обязательно на разных).

Psycho Tiger 21.09.2009 19:54

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

Ирония, но только что попал в ситуацию, когда без интерфейсов обойтись было бы сложно.)
Огромное спасибо dimarik`у.

wvxvw 21.09.2009 21:00

Если по-английски читать не напряжно, то вот неплохая статья:
http://www.lordofduct.com/blog/?p=466

enepx 21.09.2009 21:21

В AS3 класс можно унаследовать от нескольких интерфейсов, и лишь от одного класса.

dimarik 21.09.2009 21:50

Цитата:

Сообщение от enepx (Сообщение 852523)
В AS3 класс можно унаследовать от нескольких интерфейсов.

Правильнее было бы сказать "реализовать". Классы не наследуются от интерфейсов.

enepx 21.09.2009 22:04

Цитата:

Сообщение от dimarik (Сообщение 852544)
Правильнее было бы сказать "реализовать". Классы не наследуются от интерфейсов.

Точно, спасибо. :away:

Котяра 22.09.2009 17:08

Еще один плюс, про которые вечно забывают - это работа с несколькими swf. здесь для доступа к подгруженной swf (и кастомизации соответственно) подходят только интрефейсы (собственно это и есть их основнач задача)


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

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