1 单观察者模式
只有一个观察者。
只有一个观察者的时候,会对类的继承关系进行简化。
在主题中定义一个接口,这即时主题约定的和观察者的回调。
主题中只需要保存一个观察者即可,主题需要提供接口让观察者注册自己。
一般情况下观察者实现主题定义的接口,然后把自己注册给主题。
2 多观察者模式
多个观察者,既然是观察者,那么就应该是观察者主动。观察者主动将自己注册给自己所感兴趣的主题。所以,观察者对象中保存了到主题对象的引用。
因为需要管理多个观察者,所以,主题对象中有观察者对象的引用列表。
主题和观察者基类是一套的,因为它们需要约定回调函数,比如update。也就是说,回调函数是主题类控制的。