定义:观察者模式是一种行为型的高级设计模式,这些设计模式都是建立在类设计模式基础之上。观察者模式旨在建立一种对象与对象之间的依赖关系,当一个对象发生改变时,观察它的对象将自动改变。被观察的对象称之为观察目标,观察它的对象称为观察者。观察者模式又被称为发布-订阅模式,发布者发布通知后,订阅者自动接收通知做出相应改变。发布者即观察目标,订阅者即观察者。
模式分析:
1.观察目标与观察者之间是一对多的关系,一个观察目标可以有多个观察者;
2.同一观察目标的观察者之间是相互独立的,没有关联关系;
3.观察目标并不关注它的观察者是谁,它只负责发布通知。
优点:
1.实现了表现层(view)与数据逻辑层(model)层的分离;
2.它在观察目标与观察者之间定义了稳定的消息更新传递机制;
3.它支持广播通信;
缺点:
1.观察者过多的话,事件通知的开销比较大;
2.观察者如果和观察目标相互依赖,可能会导致系统崩溃;
3.观察者只能根据观察目标的通知做出调整,无法判断发生通知的具体原因。