一直对这两个设计模式有点混淆,两者搞一起就晕菜了。今天梳理一下:
1、观察者模式,是observer pattern。它主要用于一个主体的某个属性变了,然后通知多个观察者。
属于一个事件源,多个观察者。通常有如下的伪代码:
subject.add(observer); //添加观察者
subject.remove(observer); //移除观察者
subject.notify(observer); //通知观察者
2、反应者模式,即reactor pattern。它主要用于一个主体感兴趣的多个事件中的一个或者多个发生了,那么就将这件事主动告诉主体。
通常有如下的伪代码:
subject.add_event(event); //添加事件(感兴趣的)
subject.remove_event(event); //移除事件
subject.set_event_call_back(event,func); //设置事件回调函数
subject.event_call_back(event,arg); //事件发生的时候的回调函数
3、通过上述分析,就不会乱了。当你想要一个类的变动,而通知其它很多不同类的时候,可以使用observer,当你想基于性能要做一些异步处理的时候,那么就使用
reactor.
4、That's All.