在Observer Pattern中当被观察对象(Observable)的状态发生变化的时候,有两种把数据从被观察对象(Observable)传递到观察者(observer)的模式:
-
Push Model
Observable发送变化的状态或者数据信息给observer,不管observer用不用这个信息。因为Observable可能需要发送大量observer不需要的信息,所以这一点不太高效。另一种方法是,Observable只发送各个observer需要的信息。这种情况下,Observable就需要区分每个不同种类的observer,并且了解每个observer需要哪些信息,这意味着Observable层和observer层之间有更多的联系和耦合
-
Pull Model
当Observable发生状态和数据变化时会通知所有observer,让observer自己去决定从Observable那里那什么样的信息。这样的模式的缺点在于中间的通信过程需要两步,在多线程的环境中容易产生一些问题。