theEagles

I am sailing, to be with you, to be free.
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Dispatcher

Posted on 2012-09-13 17:53  theEagles  阅读(176)  评论(0)    收藏  举报

 

Dispatcher模式的本质特点:

Caller,Sender 不需要知道Callee, Receiver的任何信息,因此Caller,Sender 只需关注自己的任务. 

在Windows MFC 中,不需要去获得Callee,Receiver 的窗口句柄、指针、引用, 这个是相比CWnd::PostMessage的显著优点.

当某个对象需要向一个临时对象发送消息的时候,是无法获得这个临时对象的地址的,那么,唯一的解决办法就是:临时对象创建时向其他对象注册自己,销毁时反注册。

Dispatcher对此的实现方式是:提供一个公共的注册表供临时对象注册使用。任何对象需要向临时对象发送消息,只需要从这个公共注册表中找到临时对象的指针即可。

 

有哪些场合应该使用Dispatcher模式?

1. 广播消息、广播事件

2. 接收异步消息

3. 和临时对象之间通信(传消息、函数调用等)

4. 模块间函数调用、消息传递

5. 执行Task