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

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

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

Спасибо!

1 ответ

Решение

Как вы сказали, у вас есть две альтернативы - поместить несколько слушателей в класс 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, она похожа на PureMVC + привязка данных + события Flex.

Другие вопросы по тегам