设计模式 - 事件处理

时间:2013-07-14 01:23:12

标签: design-patterns event-handling

所以我想就这种情况下使用的设计模式提出一些建议。我有这个对象来处理用户输入,如鼠标移动,按键和其他事件。我有一堆其他各种类型的对象,我希望能够“订阅”某些事件。因此,例如,对象A可能想要听“a”键按下,而对象B想要听“b”键按下。这两个事件都来自一个InputHandler对象,它是抽象的,因此可以在应用程序中扩展事件。我想知道处理这个问题的最佳方法是什么。

考虑的选项:

  1. 为每个对象提供一个在运行时设置为特定实例的InputHandler对象。这里显而易见的是,接收事件的每个对象都必须在运行时设置其InputHandler,因此我必须跟踪每个执行此操作的对象。

  2. 创建一个基类EventHandler和EventHandlerFactory。工厂可以在运行时设置InputHandler,然后每个类都可以获得一个EventHandler实例,它侦听来自InputHandler的事件。我不确定这个选择有什么问题,但它似乎不是最优雅的解决方案。

  3. 非常感谢任何建议!

1 个答案:

答案 0 :(得分:1)

我会看一下Observer设计模式。如果将其与Event Aggregator结合使用,则应该拥有所需的一切。