Skip to content

Active-object+observer+visitor

1、接收消息,消息源源不断地产生

2、并发

3、消息的种类非常多,不同的observer对不同类型的消息的处理是不同的

异步处理消息

如果需要异步处理消息,则需要使用message queue了。

4、performance:

a、避免频繁的new,使用inplacement new、message queue(memory pool)、使用copy替代new

参见工程Linux-OS Kernel\Guide\Multitasking\Process-model\Process-resource\Process-memory-model\Virtual-address-space\Segment\Stack-VS-heap 章节

b、一旦使用了message queue(memory pool),就需要让所有的message都保持一个类型

c、那如何对不同种类的message进行dispatch呢?

通过if-else实现不同类型的消息进行不同的处理

使用visitor pattern实现double dispatch

同步处理

相对比较简单

draft

Observer pattern and visitor pattern

event source就是是一个abstract structure,event source会产生各种event,对于每种event,不同的listener需要执行不同的algorithm,这个过程其实非常类似于visitor:

1) 将event source看做是由这些event组成的abstract structure,则整个过程就是对这个abstract structure的visit;

2) call back

Observer pattern + Visitor pattern for message system

https://stackoverflow.com/questions/32079697/observer-pattern-visitor-pattern-for-message-system