5

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

考虑的选项:

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

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

任何建议都非常感谢!

4

1 回答 1

3

我会看看观察者设计模式。如果将它与Event Aggregator结合使用,您应该拥有所需的一切。

于 2013-07-14T07:53:04.117 回答