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





Здесь у вас есть много вариантов - публично определенные функции в вашей модели или контроллере, такие как:
var mySharedFunction:Function = function():void
{
trace("foo");
}
... статические методы для новых или существующих классов и т. д. Лучшая практика, вероятно, зависит от того, что функция должна делать. Вы можете уточнить?
Создайте абстрактный базовый класс для своих команд и добавьте свою функцию в защищенную область. Если вам нужно повторно использовать его в другом месте, реорганизуйте его в общедоступный статический метод служебного класса.
Создайте статический класс или статический метод в одном из ваших классов Cairngorm.
class MyStatic
{
public static function myFunction(value:String):String
{
return "Returning " + value;
}
}
Затем, где вы хотите использовать свою функцию:
import MyStatic;
var str:String = MyStatic.myFunction("test");
Другой вариант - создать функцию верхнего уровня (а-ля «след»). Посмотрите этот пост, который я написал здесь.