Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Program to implementation супротив Program to interface (http://www.flasher.ru/forum/showthread.php?t=117029)

Nemo_c 16.10.2008 21:00

Program to implementation супротив Program to interface
 
В книге ActionScript 3 Design Patterns автор рассматривает два подхода к ????, я пока не понял к чему эти два подхода (видимо к составлению композиции).

В общем Автор рассматривает два подхода Program to implementation и Program to interface

Иллюстрируется это дело таким кодом

Код:

//SpaceWarrior.as
package {

        interface SpaceWarrior {

                function useWeapon():void;

        }
}

Код:

//Alien.as
package {

        public class Alien implements SpaceWarrior {

                function Alien() {

                        //Constructor
                }

                public function useWeapon():void {
                        trace("Zaaaapp!!!");
                }
        }
}


Код:

//Earthling.as
package {

        public class Earthling implements SpaceWarrior {

                function Earthling() {
                        //Constructor
                }

                public function useWeapon():void {
                        trace("Ka Boom!!!");
                }
        }
}

Код:

//Main.as
package {

        import flash.display.Sprite;

        public class Main extends Sprite {

                public function Main() {

                        //Program to implementation

                        var alien:Alien=new Alien  ;
                        alien.useWeapon();


                        //Program to interface

                        var spaceWarrior:SpaceWarrior=new Earthling  ;
                        spaceWarrior.useWeapon();

                }
        }
}


Так же автор говорит что в сферическом вакууме Program to implementation хуже чем Program to interface.

вопросы

1. Чем подход Program to interface лучше другого.
2. В чём фишка каждого подхода ?
3. Чем чревато на практике использование каждого из подходов?
4. Кто из форумчан что предпочитает и почему.

(мнение автора книги мне понятно, хотелось бы услышать альтернативные мнения)

BlooDHounD 16.10.2008 21:40

1. а в чём разница?
2. а в чём разница?
3. а в чём разница?
4. запретить автору книги писать книги.

etc 16.10.2008 21:46

1. Ничем, они просто разные, зависит от конкретной задачи;
2. Второй позволяет в одной переменной хранить ссылки на любой объект, реализующий соответствующий интерфейс. Зато первый делает доступными остальные свойства конкретного экземпляра без обязательного каста;
3. Ничем;
4. И то и другое именно там, где оно подходит лучше.

з. Ы. Я бы не стал читать книгу автора, который поленился поставить скобки при вызове конструкторов объектов. Да, можно опустить скобки, но лучше так не делать.

BlooDHounD 16.10.2008 21:51

__etc, ну да .. это болие развёрнуто :) особенно тонко подметил ЗЫ мой 4й пункт :D

terbooter 17.10.2008 00:41

Автора зовут William B. Sanders.
Он довольно много книг наваял. В часности еще книги про FMS2 и FMS3. У меня к его книжному творчеству двоякое отношение. С одной стороны, мне близок его способ мышления и желание объяснить все на простых примерах (это его фишка minimalist example, кстати на его блоге лучший такой экзэмпл по pureMVC). C другой стороны,
книгу то тоже надо писать , контракты с издательствами, сроки и тд. И получается что 50-80 процентов его книг набиты гольной коньюктурой - пустое пересказывание очевидных вещей.

Завтра посмотрю к чему эти два подхода, дома книжки нет.

Fernando Costa 17.10.2008 02:22

Код:

2. Второй позволяет в одной переменной хранить ссылки на любой объект, реализующий соответствующий интерфейс.
Вот это очень полезный момент

Gaen 17.10.2008 12:59

Всё разбивается, когда нужно одновременно наследоваться от кого-то, и реализовывать дополнительный интерфейс. Единственный выход - самому прописать интерфейс того, от кого наследуешься. Я про Sprite говорю.

Если хочется унаследовать несколько классов от спрайта, и потом навесить на них общий интерфейс, то нифига не получится. Или получится, но на костылях.

http://flasher.ru/forum/showthread.php?t=115336

Nemo_c 17.10.2008 14:00

Цитата:

Сообщение от Fernando Costa (Сообщение 770921)
Вот это очень полезный момент

Полезный момент для чего?, и при каких обстоятельствах?


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

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