Где в 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.