2013-07-14 2 views
3

Поэтому я хочу получить совет относительно того, какой шаблон дизайна использовать в этой ситуации. У меня есть этот объект, который обрабатывает пользовательский ввод, такой как движение мыши, нажатия клавиш и другие события. У меня есть множество других объектов различных типов, которые я хочу иметь возможность «подписаться» на определенные события. Так, например, объект A может захотеть прослушать нажатие клавиши «a», а объект B хочет прослушать нажатие клавиши «b». Оба события происходят от одного объекта InputHandler, который является абстрактным, чтобы события могли быть расширены в приложении. Мне интересно, как лучше всего справиться с этим.Design Pattern - Обработка событий

Рассмотренные варианты:

  1. Дают каждый объект объект InputHandler, который устанавливается на конкретный экземпляр во время выполнения. Очевидным здесь является то, что каждый объект, который принимает события, должен иметь свой набор InputHandler во время выполнения, поэтому мне нужно будет отслеживать каждый объект, который делает это.

  2. Создайте базовый класс EventHandler и EventHandlerFactory. На заводе может быть установлен InputHandler во время выполнения, а затем каждый класс может получить экземпляр EventHandler, который прослушивает события из InputHandler. Я не совсем уверен, что не так с этим выбором, но это не похоже на самое элегантное решение.

Любые предложения приветствуются!

ответ

1

Я бы рассмотрел шаблон дизайна Observer. Если вы объедините это с Event Aggregator, у вас должно быть все, что вам нужно.