2013-07-14 77 views
3

所以我想在這種情況下使用什麼樣的設計模式。我有這個對象來處理用戶輸入,如鼠標移動,按鍵和其他事件。我有一堆其他各種類型的對象,我希望能夠「訂閱」某些事件。因此,例如,對象A可能想要聽「a」鍵按下,而對象B想要聽「b」鍵按下。這兩個事件都來自一個InputHandler對象,它是抽象的,這樣事件就可以在應用程序中擴展。我想知道處理這個問題的最好方法是什麼。設計模式 - 事件處理

選項考慮:

  1. 爲每個對象在運行時設置爲特定實例的InputHandler對象。顯而易見的是,每個接收事件的對象必須在運行時設置其InputHandler,所以我將不得不跟蹤每個執行此操作的對象。

  2. 創建一個基類EventHandler和EventHandlerFactory。工廠可以在運行時設置InputHandler,然後每個類可以獲取EventHandler的實例,該實例偵聽來自InputHandler的事件。我不確定這個選擇有什麼問題,但它看起來不是最優雅的解決方案。

任何建議,非常感謝!

回答

1

我會看看Observer的設計模式。如果你將它與Event Aggregator結合起來,你應該擁有你需要的一切。