AS3: лучший способ включить в класс неспецифические функции - PullRequest
0 голосов
/ 26 сентября 2011

Скажем, у меня есть следующие настройки классов ...

Дорога - расширяет MovieClip
Автомобиль - расширяет дорогу
Контроллер - расширяет Car

И я хочу включить в них некоторые общие математические функции, чтобы сделать их быстрее, например (замена классов Math на некоторые скоростные побитовые версии).

Каков наилучший способ включить эти функции во все из них без написания функций в классах или выхода из класса функций.Импортирует ли класс в каждый из них самый быстрый или лучший способ?

Ответы [ 2 ]

1 голос
/ 26 сентября 2011

Вы можете создать публичную функцию, которую вы можете импортировать в любой класс. Некоторыми примерами на базовом языке являются navigateToURL () и getTimer (). Это просто публичные функции в пакете, а не классы. Так что создайте публичную функцию, например,

package nameOfYourPackage{

  public function doSomething(a:arguments):returnType
  {
    // Stuf the function does goes here;
  }
}

тогда вы можете импортировать его в любой класс, например:

import nameOfYourPackage.doSomething;

и затем вы вызываете его в любом месте класса, который импортирует его как:

doSomething(args);
1 голос
/ 26 сентября 2011

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

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

Вы можете передать экземпляр либо в Конструкторе, либо использовать свойство (которое даст вам свободу изменять реализацию во время выполнения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...