Где в PureMVC находится правильное место для размещения прослушивателя клавиатуры, управляющего видом? - PullRequest
1 голос
/ 26 января 2011

У меня есть опыт работы с PureMVC, и я хочу использовать команды клавиатуры для управления моим видом.Остальной части приложения не нужно знать о том, что делает это представление.

Должен ли я поместить их непосредственно в представление или они должны быть в каком-то другом месте и получать представление, используя уведомление приклавиша нажата?

Спасибо!

1 Ответ

2 голосов
/ 27 января 2011

Как вы сказали, у вас есть две альтернативы - поместить слушателей в класс view.mxml или поместить слушателей в какой-то общий класс.

1-й - это нормальный подход, никаких дальнейших объяснений не требуется, каждый программист будет делать то же самое.

2-й подход более интересен. Если у вас есть много просмотров, прослушивание событий клавиатуры, вы начнете использовать что-то вроде

public class EnterButtonPressed extends SimpleCommand 
{
  function execute(...):void
  {
    //do something with the model, and then notify the view
  }
}

но после добавления большего количества представлений, которые должны прослушивать ключ Enter, ваш класс будет выглядеть так

public class EnterButtonPressed extends SimpleCommand {
  function execute(...):void
  {
    switch(viewType)
    {
      case view1:
        //do something with the model, and then notify view1
        break;
      case view2:
        //do something with the model, and then notify view2
        break;
      case view3:
        //do something with the model, and then notify view3
        break;
      case view4:
        //do something with the model, and then notify view4
        break;
      ...
  }
}

Что кажется ужасным, если вы слушаете много событий клавиатуры. Но если вы знакомы с шаблонами проектирования, вы можете использовать State Pattern .

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

Я также рекомендую вам взглянуть на Mate framework, он похож на PureMVC + привязка данных + события Flex.

...