设计模式 - 事件处理

wil*_*amg 5 design-patterns event-handling

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

考虑的选项:

  1. 为每个对象提供一个在运行时设置为特定实例的 InputHandler 对象。这里明显的缺点是每个接收事件的对象都必须在运行时设置它的 InputHandler,所以我必须跟踪每个这样做的对象。

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

任何建议都非常感谢!

Dav*_*rne 3

我会看看观察者设计模式。如果将其与事件聚合器结合起来,您应该拥有所需的一切。