Swiz Framework

Наткнулся тут на обсуждение нового (для меня) flex-фреймуорка - Swiz Framework. Идеи, которые вложили в проект Крис Скотт, Сонке Ройдэ и Бен Клинкинбирд вполне заслуживают изучения.

Во-первых, Swiz использует принцип “инверсия управления” (IoC) – то есть уменьшения связанности1, типичный пример которого выглядит так: вот обычный код:

public class serverFacade
{
  public Object respondToRequest(Object pRequest)
  {
    if(businessLayer.validateRequest(pRequest))
    {
      DAO.getData(pRequest);
      return aspect.convertData(pRequest);
    }
    else
    {
      return null;
    }
  }
}

Который вполне превращается и в такую вариацию:

public class serverFacade
{
  public Object respondToRequest(Object pRequest)
  {
    return DAO.getData(pRequest);
  }
}

Так вот, суть этого принципа в том, что вы снабжаете ваши “пазлы” метаданными, а система – в данном случае Swiz – соберет все в единую “картину” – то есть приложение. И сделает это весьма быстро. А это очень удобно, когда вам надо собрать большие и сложные компоненты или системы, состоящие из множества классов, да и еще используя при этом особенности виртуальной машины ActionScript и стандартных компиляторов.

//Надеюсь, я понятно изъясняюсь? А то бывает, что я начинаю слишком заумно говорить и сам перестаю улавливать суть, к чему я всё веду. :)

Ещё одним принципом на котором держится этот flex-фреймуорк является “внедрение зависимости” (DI) – специфичной формы IoC, суть которой – получение необходимой зависимости путём изменения порядка связи.

Приятной особенностью Swiz является отсутствие ручных вызовов addEventListene() и removeEventListener() – вы просто пишите стандартный метод, указываете параметр, а фреймуорк сам определит какие методы вызывать, а также какие параметры передавать. И это без каких-либо специфичных событий – только обычные flex-события!

И это при том, что Swiz конфигурируется одним-единственным тегом, приблизительно вот так:

<swiz:SwizConfig
        strict="true"
        mediateBubbledEvents="true"
        eventPackages="com.benclinkinbeard.events"
        viewPackages="com.benclinkinbeard.views"
        beanLoaders="{ [ Beans ] }" />

Пример маленького тестового приложения вы можете глянуть вот тут (и код, разумеется, его посмотреть).

Отлично и то, что Swiz дружит Flex 2/3/4, прекрасно чувствует себя с AIR, да и вообще, крайне прост в освоении.

  1. Кстати, есть такой интересный проект – MIoC (Metadata-driven autowire IoC framework для ActionScript 3) – разработанный Ильёй Шульманом из Яндекса (если я ничего не напутал), и я вам крайне рекомендую с ним ознакомиться []

4 отзыва(ов) на “Swiz Framework”

  1. — 26 Июль 2009 в 10:29 I3adim

    Спасибо, за mloc, получил много экспириенс и левел ап :)

  2. — 26 Июль 2009 в 14:07 injun #576871

    @I3adim: сам получил тоже самое. Очень интересная разработка! :)

  3. — 27 Июль 2009 в 12:48 Ivan Azarov

    Меня слегка удивляет количество IoC фреймворков на AS. Встречалось, навереное, не меньше пары десятков.

  4. — 28 Июль 2009 в 03:39 injun #576871

    @Ivan Azarov: так это же хорошо! Полезно иметь хороший выбор :)

Trackback URI | RSS-фид для комментариев

Вот магическая форма для высказываний:

XHTML: разрешены следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>